当我使用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(不是抽象的)。
任何想法?
答案 0 :(得分:1)
你必须在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();
答案 1 :(得分:0)
问题已解决。这是造成问题的另一个图书馆。