c# 具有非抽象方法的抽象类抛出 ReflectionTypeLoadException

标签 c# .net inheritance abstract

当我使用反射时,我遇到了一个带有非抽象方法的抽象类的问题。

下面是我的类(class)示例:

abstract class ClassA
{
    public abstract void Method1();

    protected void Method2()
    {
        //Some logic here....
    } 
}

class ClassB : ClassA
{
    public override void Method1()
    {
        //Method1 implementation
    }
}

我正在使用反射让子类实现特定类(我的示例中为 ClassA)

var types = AppDomain.CurrentDomain.GetAssemblies()
            .Where(a => a.FullName.StartsWith("MyAssembly"))
            .SelectMany(s => s.GetTypes())
            .Where(p => p.IsClass &&  p.IsSubclassOf(ClassA)).ToList();

在“s.GetTypes()”调用中,.Net 抛出一个“System.Reflection.ReflectionTypeLoadException”,表示 ClassB 未实现 Method2(这不是抽象的)。

有什么想法吗?

最佳答案

你必须在classA之前使用typeof,看例子:

var types = AppDomain.CurrentDomain.GetAssemblies()
            .Where(a => a.FullName.StartsWith("MyAssembly"))
            .SelectMany(s => s.GetTypes())
            .Where(p => p.IsClass && p.IsSubclassOf(typeof(ClassA))).ToList();

关于c# 具有非抽象方法的抽象类抛出 ReflectionTypeLoadException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48119253/

相关文章:

c# - c# 中的 protected 与 protected 内部(再次)

actionscript-3 - 在 AS3 中,如何覆盖 [] 运算符的 setter 和 getter?

c# - 是否可以从基类继承抽象方法体中的注释?

c# - ASP.NET MVC3 : How do I hide fields using Html. DisplayForModel 和 Html.EditorForModel

c# - 通用存储库和多种 PK 类型

c# - 对于特定属性,您如何在 ModelState 中获取错误?

java - 为什么 protected clone()方法无法使用同一包中的继承来访问

c# - JsonSerializerSettings 线程安全吗?

c# - 从 C# 将对象传递给 Lua 脚本

c# - C# 中通用类的特化模式?