C# 如何使用反射动态确定类型是否为接口?

C# 如何使用反射动态确定类型是否为接口?,c#,reflection,interface,C#,Reflection,Interface,首先,这个问题不是重复我读了100遍的这篇文章(问题请继续阅读): 我使用反射在运行时动态遍历对象上的属性,以操作和添加数据。我的根本问题自然是,您不能实例化接口的实例,因此我的代码使用Activator。CreateInstance以后的下游不能针对接口或接口的集合类型运行 假设我在个人课程中有以下内容: public IList addresses1{get;set;}\\n此属性**应**标记为接口 公共列表地址2{get;set;}\\n此属性**不应**标记为接口 在对属性进行反思时,

首先,这个问题不是重复我读了100遍的这篇文章(问题请继续阅读):

我使用反射在运行时动态遍历对象上的属性,以操作和添加数据。我的根本问题自然是,您不能实例化
接口的实例,因此我的代码使用
Activator。CreateInstance
以后的下游不能针对
接口或
接口的集合
类型运行

假设我在
个人
课程中有以下内容:

public IList addresses1{get;set;}\\n此属性**应**标记为接口
公共列表地址2{get;set;}\\n此属性**不应**标记为接口

在对属性进行反思时,使用以下代码,我可以了解该属性是否实现了
接口

propertyTypeFromReflection.GetInterfaces().Any()

我遇到的问题是
IList
List
都让上面的语句返回
true
。这是因为我们知道,即使是
List
实际上也实现了一系列接口(即
IList
ICollection
IEnumerable
,等等)

由于我是动态进行此调查的,因此我不知道如何测试我的类型是否实现了一个特定的
接口
,如所有示例所示,例如我在开始时发布的链接,该链接执行以下操作:

typeof(IMyInterface)。IsAssignableFrom(typeof(MyType))
typeof(MyType).GetInterfaces()包含(typeof(IMyInterface))


我需要帮助确定动态和焦点反映的对象属性是否直接是接口而不是具体类型?所有示例都需要将已知的
接口测试为已知的具体类型,但由于这是动态发生的,我不知道如何实现这一点?

您可以使用
类型.IsInterface
属性

您可以使用
Type.IsInterface
属性

?您阅读了文档吗?@SLaks-感谢您的优质帮助。它确实帮助我解决了这个问题。你看过文档了吗?@SLaks-感谢你的高质量帮助。它确实帮助我解决了这个问题。在我无法透过树木看到森林的情况下——这非常有效。就我的工人对C#reflection的了解而言,我显然忽略了这一点。例如,我无法透过树木看到森林,这一点非常有效。就我的工人对C#reflection的了解而言,我显然忽略了这一点。