このチュートリアルを参照しています。
最初に、IController 型は次のように登録されます。
public class ControllersInstaller:IWindsorInstaller
{
public void Install(IWindsorContainer container, IConfigurationStore store)
{
container.Register(Classes.FromThisAssembly()
.BasedOn<IController>()
.LifestyleTransient());
}
}
ただし、後で EventRepository は次のように登録されます。
public class RepositoriesInstaller : IWindsorInstaller
{
public void Install(IWindsorContainer container, IConfigurationStore store)
{
container.Register(Classes.FromThisAssembly()
.Where(Component.IsInSameNamespaceAs<EventRepository>())
.WithService.DefaultInterfaces()
.LifestyleTransient()));
}
}
2つの違いは何ですか?IController の登録に使用した方法で IEventRepository を登録しようとしたのですが、うまくいきませんか? なんで?
IEventRepository の場合、その実装 EventRepository が登録に使用されます。AnotherEventRepository などの別のクラスを実装する場合は、別の登録を追加する必要があります。単一の登録を使用して、すべてのタイプの IEventRepository を登録できませんか。