2010-08-28 9 views
4

J'essaie de mettre en œuvre plusieurs contrats de service via un seul WCF.Castle Windsor Enregistrement de plusieurs interfaces sur un même service

je suis en train d'exécuter ce code:

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 
      ); 

mais il me dit que le "blogservice" est déjà enregistré. Je charge 2 Interfaces différentes qui sont implémentées via des classes différentes. et je me suis coincé dans ce point.

Répondre

1

Vous enregistrez en fait IBlogService et IBlogServiceAlternate avec le même nom (d) - blogService, donc l'erreur.

+0

Je sais que, et je le fais exprès, l'idée est d'enregistrer les deux interfaces pour le même service. comme nous pourrions le faire, au cas où nous aurions 2 ServiceContacts. que nous aimerions connecter au même service. – barroei

15

Il suffit d'écrire

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

ouais j'ai essayé cela, mais le problème est que si j'écris Component.For (). je ne peux pas avoir mis en œuvre par ou puis-je? – barroei