Есть ли шаблон для инициализации объектов, созданных через DI-контейнер

Я пытаюсь заставить Unity управлять созданием моих объектов, и я хочу иметь некоторые параметры инициализации, которые не известны до времени выполнения:

На данный момент единственный способ, которым я мог придумать, как это сделать - это использовать метод Init на интерфейсе.

interface IMyIntf {
  void Initialize(string runTimeParam);
  string RunTimeParam { get; }
}

Затем, чтобы использовать его (в Unity), я бы сделал это:

var IMyIntf = unityContainer.Resolve<IMyIntf>();
IMyIntf.Initialize("somevalue");

В этом сценарииrunTimeParam Параметр определяется во время выполнения на основе пользовательского ввода. Тривиальный случай здесь просто возвращает значениеrunTimeParam но в действительности параметром будет что-то вроде имени файла, а метод инициализации будет что-то делать с файлом.

Это создает ряд проблем, а именно, чтоInitialize Метод доступен на интерфейсе и может вызываться несколько раз. Установка флага в реализации и выдача исключения при повторном вызовеInitialize кажется неуклюжим

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

Редактировать: описал интерфейс немного подробнее.

Ответы на вопрос(5)

Ваш ответ на вопрос