c# - 实例化一个通用列表
问题描述
我想实例化一个通用的对象列表,例如:
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 和强制转换 - 不是所需的解决方案)。
有人可以帮助我吗?
解决方案
TablesClass
不是泛型类,并且您没有告诉编译器T
应该在某处是什么类型。
如果您希望能够将不同种类的对象添加到同一个IList<Tables<T>>
列表中,则T
必须是所有这些对象的通用基本类型。
例如,如果您希望能够将苹果、梨和香蕉添加到列表中,则T
可以指定类型参数作为所有Fruit
这些Fruit
类型的基类。
显然,Fruit
如果您希望能够访问列表中特定于Fruit
类的具体实现的项目的任何成员,则需要进行转换,但这是不可避免的。你不会把一堆不同种类的水果扔进一个篮子里,并期望总能捡到一个特定的水果,对吗?
推荐阅读
- c# - 静态字符串的链式插值不能按预期工作
- python - Pandas - 仅将一个数据框与其自身部分合并
- shell - 如何根据环境变量的值更新 Makefile 目标?
- java - 如何在 Java 中导入 Xodus?
- json - 在多个级别下使用powershell如何删除json中的属性
- c# - 如何为文本文件创建标题并使用 httpClient 上传?
- python - 如何限制用户仅将文件保存在 qfildialog 中的给定文件夹路径中,并阻止他在其他位置浏览?
- sql - 如何在雪花中同时运行查询
- php - PHP不将数据库打印为表
- c# - 在 VSTO 插件中访问 Globals.ThisAddIn.Application 时出现异常