c# - 从具有抽象属性的泛型类继承

标签 c# asp.net oop inheritance abstract-class

我正在尝试让一个类继承自具有通用属性的抽象类。我想我错过了一些真正重要的东西。摆脱这个错误的唯一方法是摆脱基类中的构造函数。但如果我那样做,那么我的课就没有目的了。

错误

Error CS7036 There is no argument given that corresponds to the required formal parameter 'propA'...

基类

public abstract class BaseClass<T> where T:class
{
    public string propA{ get; set; }
    public int propB{ get; set; }
    public IEnumerable<T> propC { get; set; }

    public BaseClass(string propA, int propB, IEnumerable<T> propC)
    {
        this.propA = propA;
        this.propB = spropB; 
        this.propC = propC;
    }

    public abstract IEnumerable<T> Method1();

    public abstract string Method2();

    public abstract void Method3();
}

派生类

public class DerivedClass: BaseClass<SomeClass> 
{
    public override IEnumerable<SomeClass> Method1()
    {
        //Code Here
    }

    public override string GetDefaultSortField()
    {
         //Code Here
    }

    public override void SetSortParams()
    {
         //Code Here
    }
}

最佳答案

您的派生类中没有显式构造函数,因此它“继承”了基类的构造函数。但是基类构造函数有一个参数使用泛型T,在派生类中没有定义。如果您向派生类显式添加构造函数,应该没问题。 我的意思是这样的:

    public DerivedClass(string propA, int propB, IEnumerable<SomeClass> propC)
        : base(propA, propB, propC)
    {
    } 

请注意,这样 IEnumerable<SomeClass>变成 IEnumerable<T>在基类中,因为泛型类型参数 T 绑定(bind)到 SomeClassDerivedClass .

关于c# - 从具有抽象属性的泛型类继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40041904/

相关文章:

c# - 我们的 Azure SQL 数据库是否需要更多资源?

c# - 转换多个百分比以适应 100%

mysql - Azure网站IIS不编码utf8

c# - 工厂模式困惑

java - 选择 Java Spring 作为大型网站的可扩展服务器端框架

java - 使用带参数的命令模式

c# - 返回 Task 的方法应该抛出异常吗?

c# - 为什么 C# 允许在非静态构造函数中初始化静态类变量?

asp.net - 身份验证 cookie 和 session 状态 cookie 是两个独立的 cookie 有什么好的理由吗?

jquery - 提示在 $.get 上输入 excel 文件