gpt4 book ai didi

c# - 返回一个包含泛型列表的类

转载 作者:行者123 更新时间:2023-12-03 22:55:55 25 4
gpt4 key购买 nike

我正在尝试在 c# (5.0) 中构建一个类,我可以将其用作基类并且它包含一个列表,但列表可以是 2 种不同的类型。我想执行以下操作:

public class BaseC
{
string header { get; set; }
List<object> recs { get; set; }
}

public class derive1: BaseC
{
List<myclassA> recs;
}

public class derive2: BaseC
{
List<myclassB> recs;
}

重要的是我想做的是从另一个类中的方法返回派生类:

public BaseC PopulateMyDerivedClass()
{
BaseC b = new BaseC();
b.header = "stuff";
b.recs = FileHelperEngine<myclassB> fhe.ReadStringAsList(x);
}

要点是方法 PopulateMyDerivedClass 实际上对 derive1derive2 做完全相同的事情,只是它返回不同的类型列表。

我想我需要泛型。但是,是在基类级别还是 PopulateMyDerivedClass 然后应该返回泛型?我想也许我不是在处理多态性,但正如你所猜到的,我是泛型的新手,所以很挣扎。

最佳答案

我认为你想要的是使 BaseC 成为泛型类,并在定义派生类时指定泛型:

public class BaseC<T>
{
//...
virtual List<T> Recs { get; set; }
}

public class Derived1 : Base<MyClassA>
{
override List<MyClassA> Recs { get; set; }
}

Alexei Levenkov 的好观点:

Usual note: DerivedX classes in this case will not have common parent unlike original sample. One may need to add more layer of classes (as non-generic parent of BaseC) or use an interface if DerivedX need to be treated as having common parent/interface.

关于c# - 返回一个包含泛型列表的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22545887/

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