Внедрение зависимостей для встроенных типов - PullRequest
4 голосов
/ 26 августа 2011

Этот вопрос вполне мог быть задан и раньше, но я ничего не нашел при поиске ТАК.

Когда вы используете Dependency Injection, как вы обычно обрабатываете такие типы, как списки, сетевые учетные данные и т. Д.

На данный момент в одном из моих сервисов конструкторов у меня есть:

_itemsCheckedForRelations = new List<Guid>();
_reportManagementService.Credentials = new NetworkCredential([...]);

Не могли бы вы преобразовать их в пользовательский класс / интерфейс фабрики и внедрить их или сделать так, как я сделал здесь?

Я никогда не совсем уверен, как обращаться с этими типами создания объектов.

Ответы [ 2 ]

3 голосов
/ 26 августа 2011

Вы можете легко заменить List<Guid> на IList<Guid> или ICollection<Guid> - или даже IEnumerable<Guid>, если вам нужно только прочитать список.

Для других типов BCL, которые еще не реализуютинтерфейс или иметь виртуальных членов, вам нужно извлечь интерфейс самостоятельно.Тем не менее, при этом вы должны следить за Leaky Abstractions .

0 голосов
/ 26 августа 2011

Можно двумя маршрутами; Во-первых, как вы говорите, создайте для них обертку и введите ее. Однако это зависит от того, как вы хотите заполнить состояние объектов, которые вы упаковываете. Это дело, которое я лично не буду делать. Посетите блог Krzysztof Kozmic о динамических параметрах:

Динамические параметры Виндзорского замка

Надеюсь, это поможет

...