我想将添加行为包装到wcf客户端端点
基本代码是:
using (var c = new Service1Client())
{
c.Endpoint.EndpointBehaviors.Add(new EPBeh());
c.GetData(1);
}
创建扩展后,它变得有点不同:
using (var c = new Service1Client().AddEndpointBehavior<Service1Client, IService1>(new EPBeh()))
{
c.GetData(1);
}
我用这样的扩展名做了:
public static class ClientExtensions
{
public static T AddEndpointBehavior<T,C>(this T client, IEndpointBehavior beh)
where T : ClientBase<C>
where C : class
{
client.Endpoint.EndpointBehaviors.Add(beh);
return client;
}
}
但看起来糟糕
有没有办法让它像链一样但没有明确定义通用类型?
应该是
var c = new Service1Client().AddEndpointBehavior(new EPBeh());