委托指向具有不同签名的多个功能

Tho*_*mas 2 c# delegates

单个代表如何指向具有不同签名的多个功能?

假设我有一个签名不同的两个函数.

private int Add(int x,int y)
{
   return (x+y);
}

private int MultiplyByTwo(int x)
{
   return (x*2);
}
Run Code Online (Sandbox Code Playgroud)

请告诉我是否可以与单个代表指向一次添加和多个两个不同的功能,函数将根据参数调用.

请与代码讨论,并告诉我如何使用func <>委托执行相同的工作.

谢谢

vcs*_*nes 9

这是不可能的.委托的要点是作为强类型函数指针(松散地放置),并且运行时也不会根据参数进行任何猜测.如果这是您正在寻找的功能类型,您可能会对dynamicC#4 中的关键字感兴趣.

所有委托都从一个被调用的公共委托继承Delegate,如果这是您正在寻找的功能.

static void Main(string[] args)
{
    Delegate method1 = new Action<string>(PrintOneString);
    Delegate method2 = new Action<string, string>(PrintTwoString);
    method1.DynamicInvoke("Hello");
    method2.DynamicInvoke("Hello", "Goodbye");
}

public static void PrintOneString(string str)
{
    Console.WriteLine(str);
}

public static void PrintTwoString(string str1, string str2)
{
    Console.WriteLine(str1);
    Console.WriteLine(str2);
}
Run Code Online (Sandbox Code Playgroud)