Внедрение программных свойств с помощью Microsoft Unity

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

Допустим, у меня есть ILogger, и у него есть свойство FileName, которое я хочу установить, но при этом он устанавливает зависимости в конструкторе. Как мне пройти регистрацию типа и в то же время передать строку подключения по умолчанию.

Я надеюсь, что есть простой способ сделать это - желательно без украшения свойства атрибутом, но если установка проще с атрибутом, я думаю, это круто:)

Таким образом, вопрос заключается в том, как ввести значение свойства в объект, который также использует инъекцию в конструктор - с помощью Unity.

ОБНОВЛЕНИЕ: я упомянул об этом в заголовке, но я забыл уточнить в теле текста - я хочу установить эти зависимости вручную (в коде), а не в файле конфигурации.

3 ответа

Решение

Хорошо, я думаю, это помогло задать вопрос, я узнал - вот оно.

container.Configure<InjectedMembers>().ConfigureInjectionFor<BasicLogger>(
  new InjectionProperty("FileName", @"C:\test.log")
);

Вы обычно хотите, чтобы интерфейс IConfiguration был введен. Это, вероятно, будет иметь свойство LogFile, которое вы можете прочитать.

Реализация конфигурации обычно представляет собой простую оболочку для чтения элементов из файла конфигурации.

Если вы вводите свойства, вы должны использовать [Зависимость] или вручную ввести эту зависимость.

Другие вопросы по тегам