我有一个名为MyGeneralClass的通用类:
public MyGeneralClass<T> {
public List<T> Data {get; set;}
}
我还有另一种方法需要使用它:
public void GetData(Type type) {
}
我这样使用GetData
:
GetData(typeof(MyGeneralClass<person>));
所以我的问题是如何在T
方法中找到person
的类型(在此示例中为GetData
),我无法更改{{1}的参数但我可以改变它的实现。有没有人对此有任何想法?
答案 0 :(得分:6)
通过反思:
if(type.IsGenericType &&
type.GetGenericTypeDefinition() == typeof(MyGeneralClass<>))
{
Type firstArg = type.GetGenericArguments()[0];
}
答案 1 :(得分:2)
您可以使用GetGenericArguments方法:
Type t = type.GetGenericArguments()[0];
答案 2 :(得分:1)
Type.GetGenericArguments返回一般参数的数组,即示例中的{person}
。
答案 3 :(得分:1)
您可以将GetGenericArguments用于此目的。
Type[] genericArguments = type.GetGenericArguments();
在你的情况下,Person将是这个数组中的第一个类型。
答案 4 :(得分:1)
typeof(MyGeneralClass<person>).GetGenericTypeDefinition()