如何在不事先知道我将添加哪个方法以及A类是什么的情况下,将类A中的方法添加到B类的委托中?然后从A类调用该代表?
class Class {
public string someProperty;
public delegate void myDelegate(Class obj);
myDelegate handler = new myDelegate(mainClassMethod); //here is the problem..
public void someMethod() {
handler();
}
}
class MainClass {
public static void Main() {
Class classObj = new Class();
classObj.someProperty = "hello";
public void mainClassMethod(Class obj) {
System.Console.WriteLine(obj.someProperty);
}
classObj.someMethod();
}
}
我是否应该使用除代表之外的其他内容?顺便说一句,我在C#中这样做!
答案 0 :(得分:0)
使mainClassMethod
成为静态,并通过类名MainClass
访问它。此外,您无法将嵌套函数声明为类成员,您需要单独声明mainClassMethod
。
class MainClass {
public static void Main()
{
Class classObj = new Class();
classObj.someProperty = "hello";
classObj.someMethod();
}
public static void mainClassMethod(Class obj)
{
System.Console.WriteLine(obj.someProperty);
}
}
您还声明了委托void myDelegate(Class obj);
,因此您需要传递Class
的实例作为参数。在我的示例中,我传递了this
引用找到的对象,该对象是您在someMethod
处调用的对象。
现在你可以写:
class Class {
public string someProperty;
public delegate void myDelegate(Class obj);
myDelegate handler = new myDelegate(MainClass.mainClassMethod); //no error
public void someMethod()
{
handler(this);
}
}