是否可以使用反射测试一个接口是否继承了另一个接口
本文关键字:接口 是否 一个 继承 另一个 可以使 反射 测试 | 更新日期: 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
}
}
}
}