包装样板 wcf 客户端代码
Wrap boilerplate wcf client code
我必须将 header 添加到 wcf 服务调用。
我是这样实现的:
var client = new ServiceReference1.HeaderConsumeClient("NetTcpBinding_IHeaderConsume");
using (OperationContextScope scope = new OperationContextScope(client.InnerChannel))
{
Guid apiKey = Guid.NewGuid();
MessageHeader<Guid> mhg = new MessageHeader<Guid>(apiKey);
MessageHeader untyped = mhg.GetUntypedHeader("apiKey", "ns");
OperationContext.Current.OutgoingMessageHeaders.Add(untyped);
var res = client.GetData(1);
Console.WriteLine(res);
}
但我想在每次服务调用时都提供没有此类样板代码的通用解决方案。
我认为最常见的方法是 制作我自己的 TT4 模板 并将每个调用包装在生成的代理中。
但在完成之前我想知道,是否有一些其他方法来覆盖或修饰 wcf 生成的 类 方法?
例如 - 我可以使用 unity 并注册此服务接口的实现,并将拦截器添加到对此实例的所有调用。但是看起来有点复杂。
我必须将 header 添加到 wcf 服务调用。
我是这样实现的:
var client = new ServiceReference1.HeaderConsumeClient("NetTcpBinding_IHeaderConsume");
using (OperationContextScope scope = new OperationContextScope(client.InnerChannel))
{
Guid apiKey = Guid.NewGuid();
MessageHeader<Guid> mhg = new MessageHeader<Guid>(apiKey);
MessageHeader untyped = mhg.GetUntypedHeader("apiKey", "ns");
OperationContext.Current.OutgoingMessageHeaders.Add(untyped);
var res = client.GetData(1);
Console.WriteLine(res);
}
但我想在每次服务调用时都提供没有此类样板代码的通用解决方案。
我认为最常见的方法是 制作我自己的 TT4 模板 并将每个调用包装在生成的代理中。
但在完成之前我想知道,是否有一些其他方法来覆盖或修饰 wcf 生成的 类 方法?
例如 - 我可以使用 unity 并注册此服务接口的实现,并将拦截器添加到对此实例的所有调用。但是看起来有点复杂。