调用抽象类型的方法
Invoke Methods of abstract Types
我目前正在使用 C# 进行反射,我有一个问题。我尝试调用可能是抽象或接口的不同 class 类型。所以我只是不调用那些方法,因为我不能创建一个实例(显然)。但我并不满足于此。
我的问题是:是否有可能以某种方式解决这个问题并创建一个实例,我可以在其中调用给定抽象 class 类型的方法?有点像制作一个继承自模板的 class 然后可以是抽象类型?
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);
}
}
}
是的,您可以在运行时动态创建一个继承自抽象类型的新 class,然后调用 class 上的方法:http://www.c-sharpcorner.com/UploadFile/87b416/dynamically-create-a-class-at-runtime/
你必须确保重写所有抽象方法,否则你的 class 将必须是抽象的,你将一无所获。
我目前正在使用 C# 进行反射,我有一个问题。我尝试调用可能是抽象或接口的不同 class 类型。所以我只是不调用那些方法,因为我不能创建一个实例(显然)。但我并不满足于此。
我的问题是:是否有可能以某种方式解决这个问题并创建一个实例,我可以在其中调用给定抽象 class 类型的方法?有点像制作一个继承自模板的 class 然后可以是抽象类型?
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);
}
}
}
是的,您可以在运行时动态创建一个继承自抽象类型的新 class,然后调用 class 上的方法:http://www.c-sharpcorner.com/UploadFile/87b416/dynamically-create-a-class-at-runtime/
你必须确保重写所有抽象方法,否则你的 class 将必须是抽象的,你将一无所获。