2016-07-07 3 views
3

У меня есть проект, который использует Castle Windsor для контейнера DI.Замок Виндзор - регистрация по соглашению

Первоначально это был небольшой проект, поэтому я регистрировал каждый класс отдельно, однако проект сейчас растет, поэтому я хотел бы зарегистрироваться по соглашению, однако я считаю, что документация трудно применить к моей ситуации.

Не вдаваясь в подробности, у меня есть проект, который содержит интерфейсы, каждый из которых соответствует соглашению об именах, например IUserService.cs или IBuildingService.cs.

Я тогда еще один проект, который содержит реализацию прилипание к аналогичной конвенции UserService.cs или BuildingSevice.cs

На данный момент, что требуется два отдельных вызовов Kernel.Register.

Я знаю, что можно зарегистрировать по соглашению, я просто не знаком с синтаксисом - кто-нибудь может предложить какое-то руководство?

+1

Возможный дубликат [Замок Виндзор: Как зарегистрировать по соглашению с методом делегата] (http://stackoverflow.com/questions/17309416/castle-windsor-how-to-register -по-CONVEN with-delegate-method) – Aravind

+0

Не совсем дублирование, потому что его интерфейсы/классы не имеют общего интерфейса. –

+0

@ 5NRF - Он решил это для вас? –

ответ

4

Я думаю, что вы ищете это:

container.Register(Classes.FromThisAssembly() 
    .WithService.DefaultInterfaces()); 

Если реализация не сидеть в той же сборке, как регистрационный код затем использовать на другие методы «FromAssembly»

Castle's documentation неплохо :)

+1

Небольшое изменение в том, что вам нужно сделать .FromThisAssembly() .InNamespace(). WithService ... Кроме того, что я искал :) – 5NRF

+0

Хорошо здесь :) Я вышел из InNamespace, потому что не сделал хочу смутить, может быть, не существенный материал. Рад, что это сработало! –

+0

Да, прислал меня по правильному пути, я немного перепутался - так просто, в конце концов! Еще раз спасибо! – 5NRF

Смежные вопросы