Рассмотрим следующий набор классов:Возможно ли зарегистрировать все зависимости и только зависимости данного класса с установщиком 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