我目前使用以下一行语法注册了大量的类:
container.Register(Classes.FromThisAssembly().BasedOn<IWidgetViewModel>().WithService.Base().LifestyleSingleton());
其中一个类实现了IWidgetViewModel
和我想要注册的第二个接口,因为我需要能够在其他地方注入后者。然而,添加第二个注册行(如以下(显然失败了:
container.Register(Component.For<ISpecialViewModel>().ImplementedBy<MySpecialViewModel>().LifeStyle.Singleton);
(Windsor抱怨同样实现IWidgetViewModel
的MySpecialViewModel
已经注册(。
我该如何解决这个问题?我使用温莎城堡3.3 btw.
已解决。我发现,如果我包括第二行并添加一个名称:
container.Register(
Component.For<ISpecialViewModel>().ImplementedBy<MySpecialViewModel>().LifeStyle.Singleton.Named("xyz");
据推测;独特的";以防止它失败,并且我仍然能够在需要的地方注入ISpecialViewModel
。(我对此有点惊讶,正如我所预料的那样,我总是要说出它的名字(。