Разрешение массива зависимостей в Unity - PullRequest
0 голосов
/ 07 сентября 2018

У меня есть следующий код, в котором я регистрирую серию типов (также пробовал это с RegisterInstance):

container.RegisterType<IMyService, MyService>("Type1", new InjectionConstructor(1, "test");
container.RegisterType<IMyService, MyService>("Type2", new InjectionConstructor(2, "hello world");

Затем я внедряю это в класс следующим образом:

public class MyClass : IMyClass
{
    private readonly IMyService[] _services;

    public MyClass(
        IMyService[] services)
    {
        _services = services;
    }

Пока все хорошо. Однако на более позднем этапе я хочу иметь возможность получить класс по его имени; например:

_services["Type2"].DoStuff();

Поскольку _services - это массив, мне нужно ссылаться на него по индексу. Внутри IMyService нет свойств, которые позволили бы мне получить правильное с помощью Linq. Я развлекал идею обернуть класс в другой класс, который обладает таким свойством, но, похоже, в этом нет необходимости.

Есть ли способ, которым Unity предоставляет такие вещи прямо из коробки, или есть хороший способ сделать это, что я не рассматривал?

...