Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Castle Windsor Component registration of multiple interface on a single service

i am trying to implement multiple Service Contracts via a single WCF.

i am trying to run this 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
            );

but it tells me that the "blogservice" is already registered. i am loading 2 differant Interfaces which are implemented via differant classes. and i got stuck in this point.

like image 667
barroei Avatar asked Dec 05 '22 01:12

barroei


2 Answers

Just write

Component.For<IFirst,ISecond>(). /*whatever else you need*/
like image 106
Krzysztof Kozmic Avatar answered Dec 29 '22 11:12

Krzysztof Kozmic


You are in fact registering IBlogService and IBlogServiceAlternate with the same Name(d) - blogService, therefore the error.

like image 25
Otávio Décio Avatar answered Dec 29 '22 12:12

Otávio Décio