如何根据对象类型动态调用函数

Ela*_*lad 2 c#

我正在寻找一种优雅的方法来根据作为参数传递的参数类型调用函数.

换句话说,我希望EntryPoint方法(下面)根据template参数的类型动态调用适当的myFunc方法.

public void EntryPoint(object template)
{
    missingMethod(template);//This is the code in question that should call myFunc
}

private void myFunc(TemplateA template)
{
    doSomething(template);
}

private void myFunc(TemplateB template)
{
    doSomethingElse(template);
}

private void myFunc(object template)
{
    throw new NotImplementedException(template.GetType());
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 9

三种选择:

  • 一系列if/else语句(丑陋但简单易懂)
  • 访客模式双重发送(可能很尴尬)
  • 等到C#4并使用动态类型(在您的情况下可能不可行)

就个人而言,我试图想到一个首先不需要这个的替代设计,但显然这并不总是现实的.