0

クラス ライブラリからメッセージ エンコーディングを制御できるイベントに ReadMessage と WriteMessage をマップするにはどうすればよいですか?

public class CustomMessageEncoder:MessageEncoder
{
    public delegate Message ReadMessage_dlg(ArraySegment<byte> buffer, BufferManager bufferManager, string contentType);
    public delegate Message ReadMessage_dlg(System.IO.Stream stream, int maxSizeOfHeaders, string contentType);
    public static event ReadMessage_dlg OnReadMessage;
    public delegate ArraySegment<byte> WriteMessage_dlg(Message message, int maxMessageSize, BufferManager bufferManager, int messageOffset);
    public delegate void WriteMessage_dlg(Message message, System.IO.Stream stream);
    public static event WriteMessage_dlg OnWriteMessage;
    .
    .
    .

    public override Message ReadMessage(ArraySegment<byte> buffer, BufferManager bufferManager, string contentType)
    {
        throw new NotImplementedException();
    }

    public override Message ReadMessage(System.IO.Stream stream, int maxSizeOfHeaders, string contentType)
    {
        throw new NotImplementedException();
    }

    public override ArraySegment<byte> WriteMessage(Message message, int maxMessageSize, BufferManager bufferManager, int messageOffset)
    {
        throw new NotImplementedException();
    }

    public override void WriteMessage(Message message, System.IO.Stream stream)
    {
        throw new NotImplementedException();
    }

}

StrongType (動的/params object[] なし) onReadMessage および onWriteMessage イベントが必要なだけです。2 つのメソッドを受け入れることができるデリゲート/イベントをオーバーロードする方法はありますか?

4

1 に答える 1

0

それは通常の要件だと思います。これを行う標準的な方法を試してみませんか?たとえば、ライブラリ外コード レジスタのどこかに:

 OnWriteMessage += new WriteMessage_dlg(myMessage, myStream);

特定の MessageEncoder 読み取り/書き込みメソッドごとに、delegate.invoke? を呼び出します。

 public override void WriteMessage(Message wcfMessage, Stream stream) {
   OnWriteMessage.Invoke();
 }
于 2013-06-03T23:04:53.217 に答える