Я пытался сделать то же самое в Prism, но это не удалось. Как это сделать в Prism?
Контейнер для инъекций Prism не зависит от вас, он просто пытается скрыть от вас IUnityContainer
.
При этом нет необходимости регистрировать IEnumerable<IParserBuilder>
в первую очередь.
container.Resolve<SomeResolver>()
вызовет конструктор и передаст ему экземпляры TestA
, TestB
и TestC
, если вы зарегистрировали их в первую очередь.
container.Register<ITest, TestA>( "A" );
container.Register<ITest, TestB>( "B" );
container.Register<ITest, TestC>( "C" );
К сожалению, эти A
, B
и C
также не могут быть введены, так что вам нужно сохранить свойство Name
, если вам нужно определить конкретную c услугу (я бы сделать это только для чтения, хотя). Я хотел бы иметь возможность ввести IEnumerable<(string, ITest)>
и получить имена тоже ...