我有一个列表,其中必须包含IInteract
对象。但是IInteract
是通用接口,需要2个类型参数。
我的主要想法是遍历一个对象列表,如果还没有交互,则彼此“交互”。
所以我有这个对象
List<IObject> WorldObjects = new List<IObject>();
还有这个:
private List<IInteract> = new List<IInteract>();
除非我不能编译最后一行,因为
IInteract
需要2个类型参数。但是我不知道这些参数是什么,除非添加它们。我可以在类型A和A ...或类型B和C的对象之间添加交互。我想创建“交互”类,以对“作用”对象和“目标”对象做一些事情,但是我希望它们与对象独立...因此我可以在例如之间添加交互...” SuperUltraClass”和“一个整数”。
我使用错误的方法吗?
最佳答案
假设IInteract被定义为类似
interface IInteract<T1, T2>
并且您将其用于Foo类的字段:
class Foo
{
List<IInteract...> field;
}
然后,如果要推迟决定将哪种类型绑定到IInteract类型争论的决定,则需要对容器类进行参数化:
class Foo<T1, T2>
{
List<IInteract<T1, T2>> field;
}
当您定义容器类的具体实例时,将绑定IInteract的类型参数,例如:
var x = new Foo<int, double>().
对于Foo泛型的特定实例,这将导致IInteract字段的类型为IInteract<int, double>
。关于c# - 如何创建包含打开的通用接口(interface)的List <T>?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4521587/