C# 使用反射查找实现的接口

C# 使用反射查找实现的接口,c#,.net,reflection,C#,.net,Reflection,我有以下情况: public interface IPerson { .. } public class Person : IPerson { .. } public class User : Person { .. } 现在;如果我有一个“User”对象,我如何检查它是否使用反射实现了IPerson?更准确地说,我有一个对象,它可能有一个属性SomeUser,它应该是实现接口“IPerson”的某种类型。在我的例子中,我实际上有一个用户,但这是我想通过反射检查的。我不知道如何

我有以下情况:

public interface IPerson { .. }    
public class Person : IPerson { .. }    
public class User : Person { .. }
现在;如果我有一个“User”对象,我如何检查它是否使用反射实现了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.Type.IsAssignableFrom实际上在LINQ表达式中返回false,而它本应为true。此类型.GetInterfaces().Contains([Interface Type])有效。谢谢,但我想使用Type.IsAssignableFrom.Type.IsAssignableFrom在LINQ表达式中实际返回false,它本应为true。此类型.GetInterfaces().包含([Interface Type])已工作。如果您已经有一个对象实例,则不需要反射来检查您的对象是否实现了某个接口。您可以简单地检查
如果(objUser是IPerson)
0xA3的注释不是正确答案吗?如果您已经有一个对象实例,您不需要反射来检查您的对象是否实现了某个接口。您只需检查
是否(objUser是IPerson)
0xA3的注释不是正确答案吗?
var control = _container.Resolve(objType); 
var prop = viewType.GetProperty("SomeUser");
if ((prop != null) && (prop.PropertyType.GetInterfaces().Contains(typeof(IPerson))) 
{ .. }