C# 如何将字符串转换为«;函数签名&xBB;创建一个委托?
我试图将一个方法的名称从一个类传递到另一个类,这样另一个类就可以“订阅”第一个类不知道的事件。 假设我有这些课程:C# 如何将字符串转换为«;函数签名&xBB;创建一个委托?,c#,delegates,C#,Delegates,我试图将一个方法的名称从一个类传递到另一个类,这样另一个类就可以“订阅”第一个类不知道的事件。 假设我有这些课程: class1 { public void method1(string msg) { //does something with msg } public void i_make_a_class2() { class2 bob = new class2(method1); } } class2 { delegate void dele
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);
}
}
您并不真的想传递函数的名称-您想传递委托函数本身-这是委托的关键。给我一分钟,我会按照你想要的方式写代码 给你:
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);
}
}
谢谢有了约翰尼斯的回答,我做过类似的事情,但没有这么简单!我现在觉得我几乎无法触及C#的表面!这是一个很大的优点!;-)代表们不仅仅是在c#的表面上摸索,如果你能理解它是如何工作的,你应该祝贺自己。