Общий вопрос - я знаю, что при использовании DI-контейнеров следует избегать статических классов, но в проекте, над которым я работаю, один из статических классов - это ограничение, которого я не могу избежать. Я добавляю метод в этот статический класс, и мне нужно иметь возможность внедрить службу, созданную контейнером DI. Одним из подходов было добавить статический доступ к контейнеру, но я чувствую, что это анти-паттерн. Я хотел знать, есть ли более элегантный способ внедрить службу в статический метод.
Специальный вопрос - Я разрабатываю присоединенное свойство WPF, и в обратном вызове изменения мне нужно получить экземпляр службы, который был зарегистрирован с использованием контейнера Unity DI. Единственное решение, о котором я мог подумать, это добавить статическое свойство в загрузчик, который бы возвращал контейнер Unity.
public class Bootstrapper
{
public static UnityContainer Instance
{
get
{
return _container;
}
}
Но неправильно хранить контейнер в статическом поле.
Существуют ли другие - более элегантные - решения?