2012-03-13 4 views
0

Я использую C# и единство контейнера IOC.Как зарегистрировать разные объекты с тем же интерфейсом

У меня возникла ситуация, когда мне нужно зарегистрировать несколько объектов с одним и тем же интерфейсом. В этой ситуации, как я могу регистрировать/разрешать эти требуемые объекты из единицы?

Например мне нужно 2 разные версии регистратора в том же ViewModel

Класс DatabaseLogger: ILogger {...} Класс FileLogger: ILogger {...}

Как зарегистрироваться и разрешите их как в моей модели просмотра?

Я мог бы сделать следующее:

Класс DatabaseLogger: IDatabaseLogger {...} Класс FileLogger: IFileLogger {...}

Является ли это лучший способ?

ответ

0

log4net или блок приложений регистрации журналов предприятия имеют свои собственные средства для записи вывода на несколько целей (файл, журнал событий, база данных, консоль, ...).

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

Таким образом, вам не нужно создавать собственные классы регистратора. И создание интерфейсов только с одной реализацией (IFileLogger, IDatabaseLogger, IEventLogLogger, IConsoleLogger, ...) делает интерфейс довольно useless as a means of abstraction.

Если вы не используете такую ​​библиотеку, вы можете вместо этого перейти на проверенное решение.

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