我现在很困惑C#.
我有一堆类,比如A,B和C,它们都来自"Parent"类.我有一个函数,它接受类型为Parent的参数,并且根据调用它的对象是哪个子类,我希望它调用另一个方法.
目前,我正在考虑使用字典映射类型代表委托,但这看起来很愚蠢,尽管我现在可以想出来.
问题是当我在函数中时,我只知道它是Parent类型,我可以使用GetType来获取我拥有的子类,这将允许字典.否则我可能会使用函数重载.
真正的类型转换似乎是最好的方法,允许我使用函数重载,这将不那么冗长,但我不知道我是如何做到的,或者它是否会起作用.
任何推荐?
这些方法都共享相同的签名吗?如果是这样,请将其设置为父类中的虚拟(可能是抽象的)方法:
using System;
public abstract class Parent
{
public abstract void DoSomething();
}
public class A : Parent
{
public override void DoSomething()
{
Console.WriteLine("A.DoSomething()");
}
}
public class B : Parent
{
public override void DoSomething()
{
Console.WriteLine("B.DoSomething()");
}
}
public class Test
{
static void Main()
{
Parent a = new A();
Parent b = new B();
a.DoSomething();
b.DoSomething();
}
}
Run Code Online (Sandbox Code Playgroud)
如果这不合适,那么双重发送 可能是合适的,但我真的需要了解更多情况......可能会改变现有设计的某些部分会更好.