将IFoo <t>转换为IFoo <object> </object> </t>的一般方法

时间:2011-10-10 05:33:28

标签: c# .net generics covariance variance

我有一个界面:

interface IFoo<out T> 
{
   T Get();
}

以及IFoo<int> aIFoo<User> uIFoo<string> s等一些实例。有List<IFoo<object>>用来收集它们。但variance doesn't work for value types,是否有正确的方法将它们列入清单?

1 个答案:

答案 0 :(得分:4)

此列表看起来不需要泛型,因此您可以让接口实现非泛型接口:

interface IFoo<out T> : IFoo { }

这样,所有对象都实现了相同的接口。这可能不是一个坏主意,因为它们确实有一些共同之处。现在您只需使用List<IFoo>