0

在事先不知道要添加哪个方法以及 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# 中这样做!

4

1 回答 1

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);,因此您需要将 a 的实例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);
    }
} 
于 2013-03-17T16:14:45.227 回答