我有
public class BaseClass {
public string Name;
}
public class A<T> : BaseClass {
public T Value;
public Action<T> ToDo;
}
public List<BaseClass> MyList;
我用
填充MyListA<int>, A<double>, A<SomeUnknownType>.
在处理MyList的元素时,我想调用ToDo(Value)而不必知道每种情况下特定的T是什么。
答案 0 :(得分:2)
闻起来很糟糕,但你可以试试这个:
foreach (var item in MyList)
{
if (item.GetType().IsGenericType)
{
Type genericType = item.GetType().GetGenericArguments()[0];
...
}
}
您可以将通用类型放入 genericType 变量中。
为了确定类型是否为 A ,您可以这样做:
bool isA = item.GetType().GetGenericTypeDefinition().Equals(typeof(A<>));
答案 1 :(得分:-1)
您可以简单地使用当前枚举结果(a.k.a“item”)之间的typeof
比较,例如if(item.GetType().Equals(typeof(A<>))