繁体   English   中英

如何使用反射确定已实现接口的通用类型?

[英]How do I determine the generic type of an implemented interface using reflection?

我写的东西需要使用反射在运行时发现对象中所有属性的类型。 我对简单的属性没问题,我只获取了PropertyInfo并且该类型可以直接使用。 但是,我不知道该如何处理通用集合。 例如,假设我在运行时获得了以下类的实例:

public class AnyClass
  {
  public ICollection<int> ListOfInts;
  }

因此,我使用Type.GetProperties并且很快我有了ListOfInts PropertyInfo对象。

我下一步是什么? 我如何从拥有PropertyInfo到确定它是一个整数列表? 如何仅从PropertyInfo确定集合的通用类型(在本例中为<int> )?

您可以获取通用参数类型的名称:

propertyInfo.PropertyType.GetGenericArguments()[0].Name

我相信您正在寻找该类型的通用参数。 请参见PropertyInfo.PropertyTypeType.GenericTypeArguments

PropertyInfo.PropertyType.GenericTypeArgument

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM