我正在尝试一种能够调用方法派生类的动态方法。 我有2节课 第一类是基类,它具有一个方法,允许我按名称调用方法。
public abstract class Main(){
public void DoCall (string methodName){
Type thisType = this.GetType();
MethodInfo theMethod = thisType.GetMethod(methodName);
theMethod.Invoke(this, null);
}
}
第二个是派生类,它具有我想调用的方法
public abstract class DoSomething(){
public void Print(){
Console.info("HELLO WORLD")
}
}
最后,我想使用DoCall()方法调用Print(),因为我将收到一个DoSomething()类型的对象,但是我只能将其强制转换为Main()。
public void ActOnIt(object Obj){
Main received = (Main)Obj;
received.DoCall("Print");
}
我想说这是可能的,但也许我没有正确的方法。目前,我没有例外,但也看不到控制台打印。
答案 0 :(得分:0)
您做事的方式可能不是正确的设计。尽管如此,它应该在技术上可以正常工作。
class Program
{
static void Main(string[] args)
{
ActOnIt(new DoSomething());
Console.ReadKey();
}
public static void ActOnIt(object Obj)
{
Main received = (Main)Obj;
received.DoCall("Print");
}
}
public class DoSomething:Main
{
public void Print()
{
Console.WriteLine("HELLO WORLD");
}
}
public abstract class Main
{
public void DoCall(string methodName)
{
Type thisType = this.GetType();
MethodInfo theMethod = thisType.GetMethod(methodName);
theMethod.Invoke(this, null);
}
}