Найти Ninject Bindings по типу реализации - PullRequest
5 голосов
/ 30 марта 2011

Как получить список привязок, которые привязаны к определенному типу реализации?

IKernel.Bind<IService>().To(implementationType);

как-то так?

var bindings = IKernel.GetBindings(typeof(IService))
                  .Where(b=>b.ImplementationType==implementationType)

1 Ответ

7 голосов
/ 30 марта 2011

не легко.Если вы можете каким-то образом создать Ninject Context, вы можете сделать

Kernel.GetBindings(typeof(IService))
     .Where(b => b.GetProvider(context).Type == implementationType)

UPDATE

На самом деле есть альтернативный способ сделать это.При объявлении своих привязок вы можете указать метаданные

Kernel.Bind<IService>().To(implementationType)
     .WithMetadata("type", implementationType);

Затем вы можете получить все привязки, выполнив это

Kernel.GetBindings(typeof(IService))
     .Where(b => b.Metadata.Get<Type>("type") == implementationType)
...