考慮下面的一組類:是否可以使用Castle Windsor安裝程序註冊給定類的所有依賴項和唯一依賴項?
public interface IService { }
public interface IDep1 { }
public interface IDep2 { }
public interface IDep3 { }
public class Dep1 : IDep1 { }
public class Dep2 : IDep2 { }
public class Dep3 : IDep3 { } // this one is not used
public class Service1 : IService
{
public Service1(IDep1 dep1) { }
}
public class Service2 : IService
{
public Service2(IDep1 dep1, IDep2 dep2) { }
}
我使用下面的溫莎城堡的安裝程序要註冊的繼承所有類都從IService:
container.Register(Classes.FromThisAssembly()
.BasedOn(typeof(IService))
.WithServiceSelf()
.WithServiceBase()
.LifestyleTransient());
我如何寫一個安裝程序,其會註冊所有類,它們是已經註冊的類的依賴關係,但僅此而已。換句話說:我如何寫一個通用的安裝程序,這將註冊IDep1和IDep2,但不IDep3(因爲IDep3沒有被任何IService
爲什麼你會保持在IDep3代碼庫如果它沒有被使用? – Paolo
爲什麼要註冊一個班級但不使用它? – stuartd
由於Dep3在其他地方使用,我不希望它在容器中。 – Eiver