Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.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# 发现<;T>;在IList<;T>;使用反射_C#_C# 4.0 - Fatal编程技术网

C# 发现<;T>;在IList<;T>;使用反射

C# 发现<;T>;在IList<;T>;使用反射,c#,c#-4.0,C#,C# 4.0,我正在从事一个项目,在这个项目中,我必须通过数据模型进行反思,以找出数据模型上每个属性的类型。我的代码适用于除泛型集合之外的所有情况。我必须能够理解IList中的T 我有以下数据模型 public class ArrryOfObjects { public NestModelNestedClass NestClass { get; set; } public int IntObject { get; set; } public IList<NestModelNest

我正在从事一个项目,在这个项目中,我必须通过数据模型进行反思,以找出数据模型上每个属性的类型。我的代码适用于除泛型集合之外的所有情况。我必须能够理解IList中的T

我有以下数据模型

public class ArrryOfObjects
{
    public NestModelNestedClass NestClass { get; set; }
    public int IntObject { get; set; }
    public IList<NestModelNestedClass> ListOfObjects { get; set; }
}
公共类arryofobjects
{
公共NestModelNestedClass NestClass{get;set;}
public int IntObject{get;set;}
公共IList列表对象{get;set;}
}
我已经看到了一些示例,比如如何实现这一点,但是它们使用
type.GetGenericTypeDefinition()
来获取类型。但在我的示例中,我无法使用此参数,因为“type.IsGeneric.Parameter”为false

我查看了类型文档,不知道如何执行此操作。

尝试以下操作:

var t = typeof(ArrryOfObjects)
    .GetProperty("ListOfObjects")
    .PropertyType
    .GetGenericArguments()[0];
这就是它的工作原理:

  • 阵列对象的类型
  • 获取名为
    ListOfObjects
    的属性
  • 获取该属性的类型
  • 我们知道它是至少有一个类型参数的泛型类型
  • 我们得到第一个类型参数-在您的示例中,它应该是
    typeof(NestModelNestedClass)

p.S.
GetGenericTypeDefinition
获取
typeof(IList)
,其中的泛型类型
IList
是泛型实例。

谢谢。除了GetGenericArguements()上的[0]之外,我的实际代码与您的基本相同。