2013-04-03 2 views
0

Как я могу сопоставить ReadMessage и WriteMessage с событием, чтобы я мог управлять кодировкой сообщений из библиотеки классов?WCF Extensibility MessageEncoder Implement

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 объект []) onReadMessage и onWriteMessage события есть ли способ перегрузки делегатов/событие, которое может принять буксирный Methode?

ответ

0

Это обычная почта, думаю. Почему бы вам не попробовать стандартный способ сделать это? , например. где-то в вашем вне библиотеки кода регистра:

OnWriteMessage += new WriteMessage_dlg(myMessage, myStream); 

и в каждом конкретном MessageEncoder чтения/записи вызова метода delegate.invoke?

public override void WriteMessage(Message wcfMessage, Stream stream) { 
    OnWriteMessage.Invoke(); 
} 
Смежные вопросы