3

これは手っ取り早いはずです。次のようなことは可能ですか?

[Callback(funtionY)]
void functionX()
{
}

void functionY()
{
}

functionX が呼び出されると、functionY も自動的に呼び出されますか? 私が尋ねる理由は、ネットワーク機能を小さな XNA ベースのゲーム エンジンに実装する予定であり、関数を同期済みとしてマークして、関数が呼び出されたときにすべてのクライアントで呼び出す必要があることをマークしたいからです。

ありがとう。

4

5 に答える 5

8

Aspect-Oriented Programmingが必要なようですね。

これまでPostSharpを使用してきましたが、非常にうまく機能します。

于 2009-03-09T13:07:47.573 に答える
5

おそらくPostSharpを使用すると非常に簡単に実行できますが、一般的には次のようになります。明示的に呼び出す必要があります。

于 2009-03-09T13:07:52.487 に答える
4

はい、できます。デリゲートとして作成するだけです。

Action foo = functionX;
foo += functionY;

foo(); // both called

更新: Jon (感謝) は、呼び出し順序が実際に決定されていることを指摘しました。ただし、これには決して依存しません。コメントを参照してください。

于 2009-03-09T13:10:18.300 に答える
2

あなたがこれを行うことができないいくつかの理由があります:

void functionX()
{
    functionY();
    // ... etc
}

質問の説明に基づいて、それは有効な答えです。とはいえ、すでに検討されていると思います。

別の可能性は、(コンパイルされていない) のようなイベント システムを有利に使用することです。

event Action FunctionXCalled;

// somewhere in initialization...
MyCtor()
{
    FunctionXCalled += functionY;
}

void functionY() { }

void functionX()
{
    if(FunctionXCalled != null) FunctionXCalled();
    // ... etc
}
于 2009-03-09T13:08:23.187 に答える
0

どうですか:

void functionX() {
   functionY();
   // Other implementation stuff
}

void functionY() {

}
于 2009-03-09T13:08:42.670 に答える