У меня есть метод фабрики в синтаксическом анализаторе. По существу, поскольку я загружаю маркер, я ищу обработчик для того маркера или отбрасывание до обработчика по умолчанию. Я реализовал это как a switch
и как a Dictionary<string,Type>
но оба подхода требуют, чтобы я сохранил отображение где-то в другом месте, чем класс обработчика.
Мы используем Ninject для МОК и таким образом, я понял, что могу также сделать это использование
kernel.Get<ITokenHandler>(tokenName);
но это не сохраняет меня хранящий информацию на том, с каким маркером обработчик может иметь дело в 2 местах. Существует ли способ, которым я могу украсить обработчик, таким образом, это отображается автоматически?
Если я правильно следую вашему вопросу, звучит так, как вы хотите получить названное привязку. Вы не упомянули, какую версию Ninject вы используете, но на основе фрагмента вашего кода я предполагаю, что вы используете Ninject 2.0. Если это так, то я бы подумал, что это будет достаточно для вашего привязки в вашем модуле:
Bind<ITokenHandler>().To<YourConcreteTypeHere>().Named(tokenName);
вы связываете столько же бетонных типов к одному и тому же интерфейсу и дифференцируете их по имени, а затем извлеките их с помощью точного синтаксиса, который вы указали в ваш вопрос.
Если мне не хватает что-то ключ, дайте мне знать.
Одной из методики, которую я использовал в том, чтобы BING
Вещи в таком случае, если вы можете потребовать вручения параметра (в контексте) в точке, где вы хотите кто-то, чтобы выбрать что-то.
между http://ninject.codeplex.com/wikipage?title=providers%20and%20The%20activation%20Context и http://ninject.codeplex.com/wikipage?title = Conturectual% 20 миллионов Вы должны быть в состоянии связать вещи таким образом, чтобы вы могли сказать только (когда.Context ...)
, чтобы сделать выбор?