Я использую ноги робота, у меня есть куча ServiceResponses, которые расширяют базовый класс и зависят от Parser, IParser. Мне нужно подключить парсер, специфичный для подкласса. Вот пример:
ModuleConfigResponse расширяет SimpleServiceResponse и реализует IServiceResponse.
Начальная часть легко подключается в контексте, вот пример:
injector.mapClass(IServiceResponse, ModuleConfigResponse);
injector.mapClass(IServiceResponse, SimpleServiceResponse, "roomconfig");
..etc
В каждом ответе используется синтаксический анализатор, используемый базовым классом:
injector.mapValue(IParser, ModuleConfigParser, "moduleconfig");
injector.mapValue(IParser, RoomConfigParser, "roomconfig");
Вопрос в том, как связать их вместе. Базовый класс может иметь:
[Inject]
public var parser : IParser
Но я не могу определить тип заранее. Мне интересно, есть ли хороший способ связать это в контексте. На данный момент я решил связать это, создав вместо этого ответы в ResponseFactory, чтобы я мог передать парсер вручную в конструкторе.
injector.mapValue (IParser, ModuleConfigParser, "moduleconfig");