2017-11-01 3 views
0

かなりの特定の質問で、おそらく一部のレベルでは基本的なものです。私は一般的な代表者とイベント処理の知識にギャップがあるので、私はちょっと立ち往生していないことに驚かない。しかし、オートファックを使用することは、私の理解の問題をさらに複雑にしています。私は以下で説明しようとします。.NET SAPコネクタで代理人を実装する

私は、.NET V3 SAPコネクタを使用してSAPに接続し、RFCサーバーと呼ばれるものを実装しています。 SAPの良い人はRfcServerErrorEventHandlerにさらされていることの一環として:

public delegate void RfcServerErrorEventHandler(object server, RfcServerErrorEventArgs errorEventData); 

私は、私たちは、サーバーマネージャを呼び出します何を持っているクラスライブラリの私のサーバーを起動します。それは、サーバーを起動し、それを停止することです。

public IServerManagerService _ServerManager; 
public ApplicationLogic(IServerManagerService serverManager) 
{ 
     _ServerManager = serverManager; 
} 

_ServerManager.StartServer(ServerName); 

は、上記に行く:私は何をして立ち往生しています、私は以下のように実装して、私のメインプログラムにAutoFacを用いて注入された私のサーバーマネージャークラスで上記のデリゲートを使用して行くことができる方法地球上ですサーバーマネージャクラスを使用し、StartServerメソッドを明示的に実行します。

public void ErrorHandler(object sender, RfcServerErrorEventHandler e) 
    { 

     throw new Exception("The method or operation is not implemented."); 
    } 

をしかし、私の人生のために私は、デリゲートがフックアップ取得するいずれかの方法を見つけ出すことができます:私は、サーバーマネージャクラスで以下のように(私はかすんだところ、これがある)イベントをしようとして登録しようとしてきましたこれに、またはautofacを使ってそれを行う方法を見つけ出す。私はいくつかの試みをしてきましたが、私はちょうどオンラインのどこでもこれの例を見つけることができません。 SAP .NETコネクタはかなりのニッチなことです。コネクターの資料には、非常に基本的なコード・サンプルしかありません。

私の問題は、DIを使っているときには、基本的なイベントハンドリングテクニックが不足している可能性があるということです。私は投稿する前に公正な量の読書をしたが、それを手に入れていない。事前

答えて

0

おかげでこれは何か良いC#の本の中で説明すべきである:トピック「委任」と「イベント」を参照してください。基本的には、+ =演算子を使用するだけで、特定のイベントでイベントハンドラを登録することができます。 (あなただけRFCSERVERを使用して1が、「+ =」あなたはイベントのために、複数の加入者を持つことができるとされている場合は、「=」も、動作するはずです。)

ですから、例えばあなたのケースで

myServer.RfcServerError += new RfcServer.RfcServerErrorEventHandler(ErrorHandler); 

しかし、イベントハンドラ(メソッドErrorHandler)の定義が間違っていることに注意してください。 2番目の引数は、RfcServerErrorEventArgsであり、RfcServerErrorEventHandlerではありません。

public void ErrorHandler(object sender, RfcServerErrorEventArgs e) 
{ 
    // Do something with "e" here. Throwing an exception is probably 
    // not a good idea... 
    throw new Exception("The method or operation is not implemented."); 
} 
関連する問題