簡體   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