2010-08-28 90 views
4

我想通過單個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個通過不同類實現的不同接口。 我陷入了這一點。

回答

1

您實際上正在註冊IBlogService和IBlogServiceAlternate具有相同的Name(d) - blogService,因此是錯誤。

+0

我知道,我這樣做是故意的,這個想法是兩個接口註冊到同一服務。 就像我們可以做的一樣,以防我們有2個ServiceContacts。我們想連接到相同的服務的 。 – barroei 2010-08-28 20:12:33

15

只要寫

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

是的,我試過,但問題是,如果我寫 Component.For ()。 我不能實施通過<第一,第二> 或我可以嗎? – barroei 2010-08-29 05:54:22

相關問題