我目前正在使用c#进行反思,我有一个问题。我尝试调用可能是抽象或接口的不同类类型。所以我只是不调用那些方法,因为我无法创建一个实例(显然)。但我对此并不满意。
我的问题是:是否有可能以某种方式解决这个问题并创建一个实例,我可以在其中调用给定抽象类类型的方法? Sorta就像创建一个继承自Template的类,然后可以作为抽象类型?
foreach (MethodInfo m in _classType.GetMethods(bindingFlags))
{
if (_classType.IsAbstract || _classType.IsInterface)
{
// only invoke instanciable types
MessageBox.Show("Abstract class and Interface cannot be invoked!");
}
else
{
var ms = CreateStringFromMethodForCheckedBox(m);
if (s == ms)
{
m.Invoke(Activator.CreateInstance(_classType), null);
}
}
}
答案 0 :(得分:1)
是的,您可以在运行时动态创建一个继承自抽象类型的新类,然后调用类上的方法:http://www.c-sharpcorner.com/UploadFile/87b416/dynamically-create-a-class-at-runtime/
你必须确保覆盖所有抽象方法,否则你的类必须是抽象的,你什么都得不到。