gpt4 book ai didi

c# - 如何制作具有泛型类型参数的对象列表

转载 作者:行者123 更新时间:2023-11-30 20:56:41 24 4
gpt4 key购买 nike

我有一个接受类型参数的对象 - 称它为 Object<T> - 并且需要能够将多个具有不同类型参数的对象添加到列表中,如下所示:

var obj1 = new Object<SomeType>();
var obj2 = new Object<SomeOtherType>();

var list = new List<Object<WhatGoesHere>{ obj1, obj2 };

我知道我可以使用一个接口(interface),如果它只是一个不同对象的列表,但它似乎不适用于具有不同类型参数的对象列表,所以我想知道我在这里有什么选择?

最佳答案

通常最好创建一个界面。我的大部分泛型类都有接口(interface),可以在不知道泛型参数的情况下使用它们。

interface IFoo
{
object UntypedBlah(object arg);
}

class Foo<T> : IFoo
{
object UntypedBlah(object arg)
{
return Blah((T)arg);
}

T Blah(T arg)
{
//...
}

}

List<IFoo> foos = new List<IFoo>();
foos.Add(new Foo<int>());
foos.Add(new Foo<string>());
  • 你也可以让它协变。 (该接口(interface)将有一个协变泛型参数。这取决于您在接口(interface)上需要的成员是否有意义。)
  • 您可以为它们指定相同的名称并显式实现它们,而不是使用“无类型”成员。但有时您在拥有复杂的接口(interface)和类层次结构时会遇到麻烦,给它们一个不同的名称可能会更容易。

关于c# - 如何制作具有泛型类型参数的对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17418150/

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