Windsor-如何针对两个接口但独立的注册行进行注册



我目前使用以下一行语法注册了大量的类:

container.Register(Classes.FromThisAssembly().BasedOn<IWidgetViewModel>().WithService.Base().LifestyleSingleton());

其中一个类实现了IWidgetViewModel和我想要注册的第二个接口,因为我需要能够在其他地方注入后者。然而,添加第二个注册行(如以下(显然失败了:

container.Register(Component.For<ISpecialViewModel>().ImplementedBy<MySpecialViewModel>().LifeStyle.Singleton);

(Windsor抱怨同样实现IWidgetViewModelMySpecialViewModel已经注册(。

我该如何解决这个问题?我使用温莎城堡3.3 btw.

已解决。我发现,如果我包括第二行并添加一个名称:

container.Register(
Component.For<ISpecialViewModel>().ImplementedBy<MySpecialViewModel>().LifeStyle.Singleton.Named("xyz");

据推测;独特的";以防止它失败,并且我仍然能够在需要的地方注入ISpecialViewModel。(我对此有点惊讶,正如我所预料的那样,我总是要说出它的名字(。

最新更新