Вам не достаточно IRequest.ParentContext
? 1002 *
Кроме того, если все, что вам нужно, это использовать имя для устранения неоднозначности нескольких экземпляров [и вы будете в состоянии предоставлять его каждый раз и будете рады работать в таком явном порядке расположения службы вместо использования DI в качестве IDeity намерен], то есть перегрузка Get с именем и WithName для на стороне Bind.
РЕДАКТИРОВАТЬ: провел некоторое время в отражателе, но я все еще не намного мудрее. Механизм параметров, по-видимому, предназначен для переопределения определенных значений в контексте фактического связывания, а не как часть выбора связующего, который применяется. Установление контекста выполняется только в одном месте внутри (хотя Context
имеет публичный ctor), поэтому не похоже, что для этого есть изящная фабрика.
Соответствует ли ваш реальный сценарий механизму ограничений (из которых использование имени для фильтрации является просто самым простым случаем). то есть, вы можете выразить Get
как-то так:
_kernel.Get<ITarget>( (Ninject.Planning.Bindings.BindingMetadata metadata)=>metadata.Has("x") );
Надеюсь @ Ян Дэвис скоро придет, так как я бы тоже хотел узнать ответ: D