C# .NET:如何检查泛型类型类中的类型?
如何在类中获取泛型类型类的类型 例如: 我构建了一个实现ICollectionC# .NET:如何检查泛型类型类中的类型?,c#,.net,generics,types,C#,.net,Generics,Types,如何在类中获取泛型类型类的类型 例如: 我构建了一个实现ICollection的泛型类型集合。我有一些方法,比如 public void Add(T item){ ... } public void Add(IEnumerable<T> enumItems){ ... } 当然,这在C#中是行不通的。建议 多谢各位 Michael您可以使用:typeof(T) 就个人而言,我会通过将IEnumerable方法重命名为
public void Add(T item){
...
}
public void Add(IEnumerable<T> enumItems){
...
}
当然,这在C#中是行不通的。建议
多谢各位
Michael您可以使用:typeof(T)
就个人而言,我会通过将
IEnumerable
方法重命名为AddRange
来回避这个问题。这避免了此类问题,并且与现有API(如)保持一致
当
T
要添加工具IEnumerable
(我承认很少见)时,它还可以保持整洁。如果要在泛型类/方法中使用is
运算符,则必须将T
限制为引用类型:
public void MyMethod<T>(T theItem) where T : class
{
if (theItem is IEnumerable) { DoStuff(); }
}
公共void MyMethod(T item),其中T:class
{
如果(item是IEnumerable){DoStuff();}
}
我想他只是关心当一个非泛型IEnumerable作为System.Object传递时,T是System.Object这回答了标题中提出的问题。
if (typeof(T) == typeof(object) ) {
// Check for IEnumerable
}
public void MyMethod<T>(T theItem) where T : class
{
if (theItem is IEnumerable) { DoStuff(); }
}