c# - 将 IFoo<T> 转换为 IFoo<object> 的一般方法

标签 c# .net generics covariance variance

我有一个界面:

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

还有一些实例,例如 IFoo<int> a , IFoo<User> u , IFoo<string> s等等。有一个List<IFoo<object>>用来收集它们。但是variance doesn't work for value types , 是否有适当的方法将它们放入列表中?

最佳答案

看起来你不需要这个列表的泛型,所以你可以让接口(interface)实现一个非泛型接口(interface):

interface IFoo<out T> : IFoo { }

这样,您的所有对象都实现了相同的接口(interface)。这可能不是一个坏主意,因为它们确实有一些共同点。现在你可以简单地使用 List<IFoo> .

关于c# - 将 IFoo<T> 转换为 IFoo<object> 的一般方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7708887/

相关文章:

c# - 自定义 AuthorizeAttribute Ninject 属性注入(inject)不起作用(注入(inject)的属性具有需要注入(inject)的子依赖服务)

c# - 找出一个对象在 .NET 中使用了多少内存的最简单方法是什么?

c# - 具有类型约束的 Java 泛型接口(interface)与 C# 泛型

java - 如何使@Documented注释保留泛型信息?

c# - 如何在从 Web 应用程序输入的数据库中以加密格式存储密码?

c# - Entity Framework 按预定义顺序更新行版本

c# - 在 MVC Razor 中回发后保持下拉选择状态?

c# - 以优雅的方式使用多态性进行碰撞检测

C#:带有以 Child 类型作为参数的方法的继承类:调用了错误的方法

c# - 非常慢的性能结构