我有以下代码,在其中注册了一系列类型(也在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可以直接提供这种方式吗?还是有一种我没有考虑过的好方法呢?