2017-07-20 6 views
0

私は、第三者クラスのいくつかの部分を拡張するクラスの周りにラッパーを書いています。それは欠けていた機能を追加します。それをクラスにすることで、私は複数のプロジェクトでそれを使うことができます。他のクラスの中にイベントをラップするC#

しかし、イベントを発生させるものをどのようにラップするべきなのでしょうか。 私はこれらのイベントを拡張することもできますが、拡張クラスを使用するアプリケーションのイベントを引き上げることはできます。したがって、機能が追加されたパススルーのように機能します。私はそうMyExtendクラスは、そのコンストラクタで、このコードの断片を持っている

コードのビットでこれを明確にしましょう

thirdpartyClass theirclass += new thirdpartyclass() 
thirdpartyClass.init() 
theirclass.EventX = += MyWrapper_Method 

そして、今

Public Void MyWrappedEvent_method() 
{ 
    messagebox("logged it") //it actually logs to a database but i keep it short here 
} 

ようMyExtendクラスルック内部イベントのラッパーいくつか将来の他のプログラムは、MyExtendクラスを使用できる必要があります。 と私はあなたの MyExtendクラスでイベントを処理させるためには

Using MyExtend; 

//somwhere in main  
MyExtend HasExtended = new MyExtend(); 
HasExtended.MyWrapper += NewFutureRoutine() 
//... 
// .. 

public void NewFutureRoutine() 
{ 
    //when i call this event i wont need to care about logging thats allready in it 
    // so i could focus on other tasks ea: 
    Arduino.Controller(setHardwarePin,high); 
} 
+0

私はあなたが再びそれを発射、その後、あなたのラッパーにイベントをキャッチする必要がありますね。 –

+0

コードの上のほうが既にそれをキャッチしていますが、MyExtendクラスの中にあるので、そこからイベント(イベントとして公開)を再発生させる方法がわかります – user3800527

+0

https://msdn.microsoft.com/en-us/library/wkzf914z(v = vs.90).aspxまたはhttps://docs.microsoft.com/en-us/dotnet/standard/events/how-to-raise-and-consume-eventsまたはhttps://stackoverflow.com/questions/ 8734700/how-to-manually-invoke-an-event –

答えて

0

を書くことができるように、特定のイベント(EA MyWrappedEvent)が発生したとき、あなたがキャッチする必要がありますが、それをログに記録する以外に他のことを行うことができますあなたのクラスの希望のイベント、その後別のイベントを発射し、それを購読する。
私は、以下のリンク/説明書を読み、従うことをお勧めします:

Raising an Event
How to: Raise and Consume Events
How to manually invoke an event?

関連する問題