Я только начал использовать замок Виндзор (3.3.0
) в первый раз, и я застрял на регистрации на основе конвенций.Замок Виндзор, переориентированный зарегистрированный компонент
Я хотел бы зарегистрировать как можно больше по имени конвенция (IDummyService
->DummyService
):
var container = new WindsorContainer();
container.Register(Types.FromThisAssembly().Pick().WithServiceDefaultInterfaces());
container.Register(Component.For<IDummyService>().ImplementedBy<DummyService>().LifestyleSingleton()); // So long, I'm throwing here...
... но, конечно, чтобы иметь возможность изменить некоторые только зарегистрированные компоненты немного (изменение управление жизненным циклом, параметры конструктора и т. д.)
Поскольку я хочу, чтобы регистрация была такой простой, как это могло бы быть, я хотел бы избежать сложных условий. Только решение, которое я нашел простое - переместить пользовательские вещи выше название конвенции:
var container = new WindsorContainer();
container.Register(Component.For<IDummyService>().ImplementedBy<DummyService>().LifestyleSingleton()); // Do custom stuff first...
container.Register(Types.FromThisAssembly().Pick().WithServiceDefaultInterfaces()); // And convention at the end...
Мой вопрос сейчас, это правильный путь, как решить мою регистрацию? Я вижу, что Castle Windsor довольно могущественен в этой области и скорее решит мою задачу должным образом, к сожалению, не вижу много реальных примеров.
Спасибо за подсказку, это может решить одну из моих проблем, но я боюсь, что не хочу писать такую вещь для каждого специального компонента, который у меня может быть - я бы в конечном итоге оказался в разной степени, как ручная регистрация всего. Но спасибо за указание этой опции! –