使用反射来找到实现的接口(Using reflection to find interfaces i

2019-07-20 21:52发布

我有以下情况:

public interface IPerson { .. }    
public class Person : IPerson { .. }    
public class User : Person { .. }

现在; 如果我有一个“用户”的对象 - 我该如何检查,如果这个实现使用反射IPerson? 更精确地说我有一个对象,可能有一个属性SomeUser的,这应该是某种类型实现接口“IPerson”的。 在我来说,我其实有一个用户,但是这是我想通过反射来检查什么。 我无法弄清楚如何检查属性类型,因为它是一个“用户”,但我要检查是否实现IPerson ...:

var control = _container.Resolve(objType); // objType is User here
var prop = viewType.GetProperty("SomeUser");
if ((prop != null) && (prop.PropertyType is IPerson)) 
{ .. }

(注意,这是我的实际案例的简化,但有一点应该是相同的......)

Answer 1:

检查Type.IsAssignableFrom方法。



Answer 2:

var control = _container.Resolve(objType); 
var prop = viewType.GetProperty("SomeUser");
if ((prop != null) && (prop.PropertyType.GetInterfaces().Contains(typeof(IPerson))) 
{ .. }


Answer 3:

请参阅接口的实现通过反射 。



文章来源: Using reflection to find interfaces implemented