如何获得底层类型的通用接口?

时间:2016-04-17 00:39:48

标签: c# .net reflection

public class TestBase
{
    // implementation
}
public class Test : ICollection<TestBase>
{
    // implementation
}

在其他地方,我有一个测试类型的属性:

public Test Test {get;set;}

如何获取Test继承的ICollection的基础类型?

4 个答案:

答案 0 :(得分:3)

您可能正在寻找的是 freq dBm 0 2000000000 -62.689350 1 2040000000 -64.152839 2 2080000000 -63.775190 3 2120000000 -63.663057 4 2160000000 -64.227156 5 2200000000 -63.874805 defaultdict(<class 'list'>, {'FIRMWARE_VERSION': 'A.08.05', 'MODEL': 'N9917A', 'NAME': 'Keysight Technologies', 'SERIAL': 'US52240515', 'TIMESTAMP': 'Friday 15 April 2016 04:50:05', 'TIMEZONE': '(GMT+08:00) Kuala Lumpur Singapore'})

GetGenericArguments()

答案 1 :(得分:0)

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

var type = x.GetType();
var interfaces = type.GetInterfaces();

编辑:我的问题出错:跟进&#34; GetGenericArguments()&#34;如建议的那样。

答案 2 :(得分:0)

SELECT ReportId ,Status ,SurveyDate ,S.CorrelationId ,S.ObjectId ,S.VersionNumber ,S.CreateDateTime ,S.LastUpdateDateTime ,S.IsDeleted FROM Reports R INNER JOIN SyncMetadata S ON R.ReportId=S.ObjectId 方法返回当前类型的所有已实现接口,其GetInterfaces方法返回通用参数列表,您可以通过GetGenericArguments属性获取其基类型。 此示例返回基接口的泛型参数的类层次结构 在当前类中实现:

var myType = this.GetType()。GetInterfaces()。First()。GetGenericArguments()。First();                     while(myType!= null)
                    {
                    Console.WriteLine(myType.Name);
                    myType = myType.BaseType;
                    }

答案 3 :(得分:-1)

 Type t = typeof(Test);
 MethodInfo mi = t.GetMethod("MyMethod");
 Type returnvalue = mi.ReturnType;
 Type answer = Nullable.GetUnderlyingType(returnvalue);

我希望它有所帮助。