Я пытаюсь использовать Castle.Windsor (3.2.0.0) convention based registration, но не могу понять, как регистрировать классы, реализующие конкретный интерфейс только в определенном пространстве имен.Как регистрировать классы по интерфейсу и пространству имен с помощью Windsor?
например. что я действительно хочу, чтобы иметь возможность написать что-то вроде этого:
container.Register(Classes.FromThisAssembly()
.InNamespace("MyApp.EventHandlers")
.BasedOn(typeof(IHandlesEvent<>))
.WithServiceAllInterfaces()
Но я получаю предупреждение, что, кажется, подразумевает, что это будет действительно сделать, это зарегистрировать все в EventHandlers
пространстве имен, а затем все, что в текущей сборке, реализует IHandlesEvent<>
.
Если я запускаю приложение, это действительно похоже на то, что происходит. Я не хочу, чтобы все, что реализует этот интерфейс для регистрации (например, некоторые из классов реализации - это Sagas, которые необходимо отслеживать вручную), и я действительно не хочу, чтобы все в этом пространстве имен было зарегистрировано.
Я действительно не хочу регистрировать обработчики событий по отдельности, но я не могу видеть из документации Windsor, как делать то, что мне нужно по соглашению. Является ли это возможным?
Я никогда не замечал этого, v. Интересного и удивительного поведения. Я бы подумал, что эта конструкция будет внутренне разрешать список фильтров, однако это даже не похоже, что это конечный результат – samy