如何将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(没有动态/参数对象[])onReadMessage和onWriteMessage事件 有没有办法超载可以接受拖曳方法的委托/事件?
答案 0 :(得分:0)
我认为这是我们的要求。你为什么不尝试这样做的标准方式? 例如在您的库外代码寄存器中的某处:
OnWriteMessage += new WriteMessage_dlg(myMessage, myStream);
并在每个特定的MessageEncoder读/写方法中调用delegate.invoke?
public override void WriteMessage(Message wcfMessage, Stream stream) {
OnWriteMessage.Invoke();
}