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

static にしてmainClassMethod、 class name 経由でアクセスします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 に答える