通用客户端的WCF客户端注册

时间:2011-11-04 07:30:01

标签: c# wcf autofac

假设我有以下合同

[ServiceContract]
public interface ISomethingService<T>
{
    [OperationContract(IsOneWay = true)]
    void DoSomething(string messageType, T message);
}

我想使用Autofac创建一个客户端。而不是

var address = new EndpointAddress(SOME_ADDRESS);
ChannelFactory<ISomethingService<T>> factory = null;
factory = new ChannelFactory<ISomethingService<T>>(new NetTcpBinding());

IPublisherService<T> proxy = factory.CreateChannel(address);
proxy.DoSomething(typeof(T).FullName, message);

我可以使用Autofac。我在google code wiki page阅读了wiki,并且还阅读了this StackOverflow question。看来我需要做的是两种解决方案之间存在的问题,或者我对Autofac的了解还不够。

我得到的是,对于每种类型的消息,我在Autofac中注册了这个:

builder.Register(c => new ChannelFactory<ISomethingService<SomeMessageType>>(new NetTcpBinding(), new EndpointAddress("address")));

        builder.Register(c => c.Resolve<ChannelFactory<ISomethingService<SomeMessageType>>>().CreateChannel()).UseWcfSafeRelease();

我似乎需要一个开放的泛型机制,或者我可以扫描程序集以查找实现特定接口的类,并为每个接口执行上述注册。

也许我错了,但我对上面编写的代码不满意。 你有什么建议或暗示吗? 谢谢!

0 个答案:

没有答案
相关问题