c# - 如何检查该类型是从某些接口(interface)继承的 C#

标签 c# reflection inheritance interface

我有以下内容:

Assembly asm = Assembly.GetAssembly(this.GetType());

foreach (Type type in asm.GetTypes())
{
    MyAttribute attr = Attribute.GetCustomAttribute(type, typeof(MyAttribute))    as MyAttribute;
     if(attr != null && [type is inherited from Iinterface])
     {
        ...
     }

}

我如何检查该类型是从 MyInterface 继承的? keywork 会以这种方式工作吗?

谢谢。

最佳答案

不,仅适用于检查对象的类型,不适用于给定的类型。你要Type.IsAssignableFrom :

if (attr != null && typeof(IInterface).IsAssignableFrom(type))

注意这里的顺序。我发现我几乎总是使用typeof(...) 作为调用的目标。基本上它要返回 true,目标必须是“父”类型,参数必须是“子”类型。

关于c# - 如何检查该类型是从某些接口(interface)继承的 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4334710/

相关文章:

c++ - 使用继承和模板的数据库接口(interface)

c++ - 将模板传递给函数而不指定具体类型

c# - 将异常或消息从线程/任务传递到主线程

c# - 将 .Net 程序集加载/注入(inject)到现有的 .net 进程中?

ruby - 如何在初始化父类时返回子类的新实例?

java - 从子类外部访问父类的 protected 方法(使用反射或任何可行的方法)

pointers - 如何在 Go 中将动态创建的结构作为非指针对象传递

c# - 如何调试 .NET Framework 源代码

c# - “HttpClient”不包含 'GetFromJsonAsync' 的定义

c# - 将 Borland C++ 迁移到 C#