是否可以使用反射测试一个接口是否继承了另一个接口

本文关键字:接口 是否 一个 继承 另一个 可以使 反射 测试 | 更新日期: 2023-09-27 18:09:40

所以我有以下Interface:

public interface Interface2 : Interface1
{
   //Properties here
}

Class如下:

public class MyClass
{
   public Interface2 MyDataAccess { get; set; }
   public void TestInheritance()
   {
        foreach (var property in typeof(MyClass).GetProperties())
        {
            var type = property.PropertyType;
            var inheritsproperty = type.IsAssignableFrom(typeof(Interface1));
            if (type is Interface1 || inheritsproperty)
            {
                //never hit
            }
        }
   }
}

,看看它,我希望上面的代码能工作,

inheritsProperty总是假,type is Interface1总是假。

那么是否有可能检查一个接口是否使用反射继承了另一个接口?我做错了什么?

是否可以使用反射测试一个接口是否继承了另一个接口

您应该交换类型:(已测试)

var inheritsproperty = type.IsAssignableFrom(typeof(Interface1));
应:

var inheritsproperty = typeof(Interface1).IsAssignableFrom(type);

这个命名有点模糊,但是它说,Can you assign <parameter> to the caller/source type.


使:

public class MyClass
{
   public Interface2 MyDataAccess { get; set; }
   public void TestInheritance()
   {
        foreach (var property in typeof(MyClass).GetProperties())
        {
            var type = property.PropertyType;
            var inheritsproperty = typeof(Interface1).IsAssignableFrom(type);
            if (inheritsproperty)
            {
                //does hit
            }
        }
   }
}