Castle Windsor Компонент регистрации нескольких интерфейсов на одном сервисе - PullRequest
4 голосов
/ 28 августа 2010

Я пытаюсь реализовать несколько контрактов на обслуживание через один WCF.

Я пытаюсь запустить этот код:

  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 разных интерфейса, которые реализуются через разные классы. и я застрял в этой точке.

Ответы [ 2 ]

15 голосов
/ 29 августа 2010

Просто напишите

Component.For<IFirst,ISecond>(). /*whatever else you need*/
1 голос
/ 29 августа 2010

Вы фактически регистрируете IBlogService и IBlogServiceAlternate с одним и тем же именем (d) - blogService, поэтому ошибка.

...