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)
派生类中没有显式构造函数,因此它“继承”基类的构造函数。但是基类构造函数有一个使用泛型类型 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 会绑定到SomeClass
in DerivedClass
。
归档时间: |
|
查看次数: |
1786 次 |
最近记录: |