У меня есть следующий код, в котором я регистрирую серию типов (также пробовал это с 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 предоставляет такие вещи прямо из коробки, или есть хороший способ сделать это, что я не рассматривал?