【发布时间】:2012-02-08 02:32:54
【问题描述】:
我想验证List<T>的所有元素类型都是T。
我可以有一个包含对象、字符串、int、产品、供应商等的List<object>,但在我的情况下,如果List<T> 被定义为List<object>,则所有元素都必须是对象。
也就是说,我要确保元素的类型是传入的泛型类型的确切类型,而不是继承链中的任何其他类型。
例子:
public void Foo<T>(List<T> list)
{
// if not all elements are of type T (not SubClass of T) throw exception
//...
}
最好的方法是什么?
【问题讨论】:
-
我可能会预先执行此操作并创建一个包含我的对象列表的类。插入后,我会保证添加的类型在批准列表中。
-
我很好奇为什么当你需要一个整数列表和一个 List
如果你需要一个供应商列表等等时你不会只创建 List 。通过这样做 List -
这种设计是一个非常糟糕的主意 - 在这种情况下,派生类通常应该以与基类相同的方式处理 - 为什么您想要进行此测试?
-
@Etch,我有一种方法可以根据类属性属性制作 Excel 工作表。允许任何类,但不允许两个类,因此 T 和子类 T 不适合一张 excel 表。
标签: c# .net oop generics .net-2.0