首页 > 解决方案 > 实例化一个通用列表

问题描述

我想实例化一个通用的对象列表,例如:

public static class TablesClass
{
    private static IList<Tables<T>> TablesInstance { get; set; }

    static TablesClass() => Tables = new List<Tables<T>>();
    public static void AddTable(Table<t> table) => Tables.Add(table);
}

我无法更改 Tables <T>,这是一个 nuget 包类。

我怎样才能做到这一点?我所尝试的一切都不起作用(将类型 T 设置为类,使用对象而不是 T 和强制转换 - 不是所需的解决方案)。

有人可以帮助我吗?

标签: c#.net

解决方案


TablesClass不是泛型类,并且您没有告诉编译器T应该在某处是什么类型。

如果您希望能够将不同种类的对象添加到同一个IList<Tables<T>>列表中,则T 必须是所有这些对象的通用基本类型。

例如,如果您希望能够将苹果、梨和香蕉添加到列表中,则T可以指定类型参数作为所有Fruit这些Fruit类型的基类。

显然,Fruit如果您希望能够访问列表中特定于Fruit类的具体实现的项目的任何成员,则需要进行转换,但这是不可避免的。你不会把一堆不同种类的水果扔进一个篮子里,并期望总能捡到一个特定的水果,对吗?


推荐阅读