C# WCF扩展性消息编码器实现
如何将ReadMessage和WriteMessage映射到可以控制类库外消息编码的事件C# WCF扩展性消息编码器实现,c#,wcf,events,delegates,wcf-extensions,C#,Wcf,Events,Delegates,Wcf Extensions,如何将ReadMessage和WriteMessage映射到可以控制类库外消息编码的事件 public class CustomMessageEncoder:MessageEncoder { public delegate Message ReadMessage_dlg(ArraySegment<byte> buffer, BufferManager bufferManager, string contentType); public delegate Message
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();
}
}
公共类CustomMessageEncoder:MessageEncoder
{
公共委托消息ReadMessage_dlg(ArraySegment缓冲区、BufferManager缓冲区管理器、字符串内容类型);
公共委托消息ReadMessage_dlg(System.IO.Stream,int-maxSizeOfHeaders,string-contentType);
公共静态事件ReadMessage\u dlg OnReadMessage;
public delegate ArraySegment WriteMessage_dlg(Message Message,int-maxpessagesize,BufferManager-BufferManager,int-messageOffset);
公共委托无效写消息(消息消息,System.IO.Stream);
公共静态事件WriteMessage_dlg OnWriteMessage;
.
.
.
公共重写消息ReadMessage(ArraySegment buffer、BufferManager、BufferManager、string contentType)
{
抛出新的NotImplementedException();
}
公共重写消息ReadMessage(System.IO.Stream、int-maxSizeOfHeaders、string-contentType)
{
抛出新的NotImplementedException();
}
公共重写ArraySegment WriteMessage(消息消息消息、int-maxMessageSize、BufferManager-BufferManager、int-messageOffset)
{
抛出新的NotImplementedException();
}
公共覆盖无效写消息(消息消息,System.IO.Stream)
{
抛出新的NotImplementedException();
}
}
我只需要StrongType(无动态/参数对象[])onReadMessage和onWriteMessage事件
有没有办法让代理/事件过载,从而可以接受两种方法?我想这就是所有要求。你为什么不试试标准的方法呢? e、 g.在库外代码登记簿中的某个地方:
OnWriteMessage += new WriteMessage_dlg(myMessage, myStream);
在每个特定的MessageEncoder读/写方法调用delegate.invoke
public override void WriteMessage(Message wcfMessage, Stream stream) {
OnWriteMessage.Invoke();
}