Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何获取泛型接口的底层类型?_C#_.net_Reflection - Fatal编程技术网

C# 如何获取泛型接口的底层类型?

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

如何获取测试从中继承的ICollection的底层类型?

让x成为实现接口的类的实例。您可以按如下方式获取其iterface类型:

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];