gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 18:58:28 25 4
gpt4 key购买 nike

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

错误

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com