gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 17:31:18 26 4
gpt4 key购买 nike

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

下面是我的类(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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com