【发布时间】:2017-07-19 09:02:38
【问题描述】:
我希望能够将方法链接到所有类型的委托。我正在尝试使用refelection.emit 执行此操作,并将动态方法与委托的足迹链接,将其添加到委托并让此动态方法调用具有所有参数的通用函数。但我希望有更简单的方法来做到这一点。
(我没有包含 reflection.emit 代码,因为这不是我想要的帮助,这仍然是一个原始尝试)
这是我想要得到的结果示例:
public class FooClass
{
public delegate string MyFirstDelegate(string input1, string input2);
public delegate int MySecondDelegate(int input1, string input2, short input3);
public static MyFirstDelegate firstDelegate = null;
public static MySecondDelegate SecondDelegate = null;
private static string FirstMethod(string input1, string input2)
{
return input1 + input2;
}
private static int SecondMethod(int input1, string input2, short input3)
{
return input1 + Convert.ToInt32(input2) + input3;
}
private static object ThirdMethod(params object[] inputs)
{
//do some magic and return result
}
public static void Main()
{
firstDelegate = FirstMethod;
SecondDelegate = SecondMethod;
string result = firstDelegate("1", "2");
int result2 = SecondDelegate(1, "3", 3);
//obviously this does not work, but is there a way to link this method to the delegate?
firstDelegate = ThirdMethod;
SecondDelegate = ThirdMethod;
string result3 = firstDelegate("1", "2");
int result4 = SecondDelegate(1, "3", 3);
}
}
【问题讨论】:
标签: c# delegates reflection.emit