Castle Windsor单一服务上多个​​接口的组件注册

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,因此是错误。

+0

我知道,我这样做是故意的,这个想法是两个接口注册到同一服务。 就像我们可以做的一样,以防我们有2个ServiceContacts。我们想连接到相同的服务的 。 – barroei 2010-08-28 20:12:33

只要写

Component.For<IFirst,ISecond>(). /*whatever else you need*/ 
+0

是的,我试过,但问题是,如果我写 Component.For ()。 我不能实施通过 或我可以吗? – barroei 2010-08-29 05:54:22