Castle Windsor单一服务上多个接口的组件注册
问题描述:
我想通过单个WCF实现多个服务合同。Castle Windsor单一服务上多个接口的组件注册
我试图运行此代码:
return new WindsorContainer()
.AddFacility<WcfFacility>()
.Register(
Component.For<IServiceBehavior>().Instance(metadata),
Component.For<IServiceBehavior>().Instance(debug),
Component
.For<IBlogService>()
.ImplementedBy<DefaultBlogService>()
.Named("blogService")
.LifeStyle.Transient
.ActAs(new DefaultServiceModel().Hosted()
.AddEndpoints(
WcfEndpoint.BoundTo(new BasicHttpBinding()))),
Component
.For<IBlogServiceAlternate>()
.ImplementedBy<AlternateBlogService>()
.Named("blogService")
.LifeStyle.Transient
.ActAs(new DefaultServiceModel().Hosted()
.AddEndpoints(
WcfEndpoint.BoundTo(new BasicHttpBinding()))),
Component
.For<ILogger>()
.ImplementedBy<DefaultLogger>()
.LifeStyle.Transient
);
,但它告诉我,“blogservice”已被注册。 我加载了2个通过不同类实现的不同接口。 我陷入了这一点。
答
您实际上正在注册IBlogService和IBlogServiceAlternate具有相同的Name(d) - blogService,因此是错误。
答
只要写
Component.For<IFirst,ISecond>(). /*whatever else you need*/
+0
是的,我试过,但问题是,如果我写 Component.For
我知道,我这样做是故意的,这个想法是两个接口注册到同一服务。 就像我们可以做的一样,以防我们有2个ServiceContacts。我们想连接到相同的服务的 。 – barroei 2010-08-28 20:12:33