C# 如何获取泛型接口的底层类型?
如何获取测试从中继承的ICollection的底层类型?让x成为实现接口的类的实例。您可以按如下方式获取其iterface类型:C# 如何获取泛型接口的底层类型?,c#,.net,reflection,C#,.net,Reflection,如何获取测试从中继承的ICollection的底层类型?让x成为实现接口的类的实例。您可以按如下方式获取其iterface类型: public Test Test {get;set;} 编辑:我把你的问题搞错了:按照建议的“GetGenericArguments()”跟进 var type = x.GetType(); var interfaces = type.GetInterfaces(); 我希望有帮助 您可能正在查找的是GetGenericArguments() GetInterfa
public Test Test {get;set;}
编辑:我把你的问题搞错了:按照建议的“GetGenericArguments()”跟进
var type = x.GetType();
var interfaces = type.GetInterfaces();
我希望有帮助 您可能正在查找的是
GetGenericArguments()
GetInterfaces
方法返回当前类型中所有已实现的接口,其GetGenericArguments
方法返回泛型参数列表,您可以通过BaseType
属性获取其基本类型。
此示例返回基本接口的泛型参数的类层次结构
在当前类中实现:
var myType=this.GetType().GetInterfaces().First().GetGenericArguments().First();
while(myType!=null){
Console.WriteLine(myType.Name);
myType=myType.BaseType;
}你的问题确实需要澄清<代码>测试不继承任何内容,它实现了
ICollection
。试着说明一下,您希望从您似乎想不到的方法中得到什么类型:它是TestBase
还是ICollection
?已经有两个答案提供了,我想您可能想要TestBase
,但不清楚。。。
var type = x.GetType();
var interfaces = type.GetInterfaces();
Type t = typeof(Test);
MethodInfo mi = t.GetMethod("MyMethod");
Type returnvalue = mi.ReturnType;
Type answer = Nullable.GetUnderlyingType(returnvalue);
var type = typeof(Test);
var collInterface = type.GetInterfaces()[0];
var generic = collInterface.GetGenericArguments()[0];