繁体   English   中英

c#使用非抽象方法的抽象类抛出ReflectionTypeLoadException

[英]c# Abstract class with non abstract method throw ReflectionTypeLoadException

当我使用Reflection时,我的抽象类有一个非抽象方法的问题。

下面是我的课程示例:

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();

问题已解决。 这是导致问题的另一个库。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM