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

met*_*ord 1 c# asp.net oop inheritance abstract-class

我试图让一个类继承一个带有通用属性的抽象类。我想我错过了一些真正重要的东西。我可以摆脱这个错误的唯一方法是摆脱基类中的构造函数。但如果我这样做的话,我的班级就会缺乏目标。

错误

错误 CS7036 没有给出与所需的形式参数“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();
}
Run Code Online (Sandbox Code Playgroud)

派生类

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

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

    public override void SetSortParams()
    {
         //Code Here
    }
}
Run Code Online (Sandbox Code Playgroud)

Ada*_*aru 5

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

    public DerivedClass(string propA, int propB, IEnumerable<SomeClass> propC)
        : base(propA, propB, propC)
    {
    } 
Run Code Online (Sandbox Code Playgroud)

请注意,这样IEnumerable<SomeClass>就会成为IEnumerable<T>基类,因为泛型类型参数 T 会绑定到SomeClassin DerivedClass