使用reflection来查找实现的接口

我有以下情况:

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

现在; 如果我有一个“用户”对象 – 我如何检查这是否使用reflection实现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)) { .. } 

(请注意,这是我实际案例的简化,但重点应该是相同的……)

检查Type.IsAssignableFrom方法。

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

请参阅通过reflection实现接口 。