如何获取类中泛型类的类型?
一个例子:
我构建了一个实现ICollection
public void Add(T item){ ... } public void Add(IEnumerableenumItems){ ... }
如何在方法中询问给定类型T?
我的问题的原因是:如果对象被用作T,则集合使用Add(对象项)而不是Add(IEnumerable
所以我需要类似的东西
if (T is object) { // Check for IEnumerable }
但当然这在C#中无效.建议?
非常感谢你!
迈克尔
您可以使用: typeof(T)
if (typeof(T) == typeof(object) ) { // Check for IEnumerable }
就个人而言,我会通过重命名IEnumerable
方法来解决问题AddRange
.这避免了这些问题,并且与现有的API一致,例如List
.
当T
你想要添加工具时,它还可以保持清洁IEnumerable
(很少见,我会承认).