我正在尝试将方法的名称从一个类传递到另一个类,因此另一个类可以将她“订阅”给第一个类不知道的事件。 假设我有这些课程:
class1
{
public void method1(string msg)
{
//does something with msg
}
public void i_make_a_class2()
{
class2 bob = new class2(method1);
}
}
class2
{
delegate void deleg(string msg);
deleg deleg1;
public class2(string fct)
{
// What I'm trying to do would go there with "fct" converted to function signature
deleg1 = new deleg(fct);
// Rest of the class constructor...
}
private void method2()
{
deleg1(im_a_String);
}
}
答案 0 :(得分:3)
你真的不想传递函数的名称 - 你想传递委托函数本身 - 这是委托的关键。给我一点时间,我会按照你想要的方式编写代码。
你走了:
public delegate void deleg(string msg);
public class class1
{
public void method1(string msg)
{
//does something with msg
}
public void i_make_a_class2()
{
class2 bob = new class2(method1);
}
}
public class class2
{
deleg deleg1;
string im_a_String = "Test";
public class2(deleg fct)
{
deleg1 = fct;
// Rest of the class constructor...
}
private void method2()
{
deleg1(im_a_String);
}
}