Конфигурация Ninject и XML - PullRequest
       13

Конфигурация Ninject и XML

5 голосов
/ 10 января 2011

Я искал в интернете какой-либо пример или получал статью о том, как связать Ninject с использованием расширения XML, но не смог найти никакой помощи! ,

Может ли какой-нибудь орган предоставить мне очень маленький образец того, как я могу это сделать?

заранее спасибо

Ответы [ 4 ]

3 голосов
/ 13 января 2011

Я тоже не могу найти примеров, но, честно говоря, исходный код очень маленький - я просто скачал ( здесь ) и прочитал тестовые примеры.

В модульном тестовом проекте есть несколько примеров, таких как:

<module name="basicTest">
<bind name="melee"
            service="Ninject.Extensions.Xml.Fakes.IWeapon, Ninject.Extensions.Xml.Test"
            to="Ninject.Extensions.Xml.Fakes.Sword, Ninject.Extensions.Xml.Test" />
<bind name="range"
            service="Ninject.Extensions.Xml.Fakes.IWeapon, Ninject.Extensions.Xml.Test"
            to="Ninject.Extensions.Xml.Fakes.Shuriken, Ninject.Extensions.Xml.Test" />
</module>

Кажется, он не очень мощный.Как кто-то еще указал , цель NInject - «освободиться от XML».

2 голосов
/ 09 ноября 2013

Их единственная документация показывает, как выглядит конфигурация xml, но они не дают пример того, как ее загрузить, поэтому вот простой пример, который показывает обе части головоломки.

Xml Config

Это будет в файле с именем NinjectModules.xml. Чтобы найти тип, мне пришлось дать ему полное имя сборки, хотя все было в одном .exe.

<module name="SomeModule">
  <bind
    service="Birds.IOwl, Birds, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
    to="Birds.SlowOwl, Birds, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"/>
</module> 

Загрузка конфигурации

IKernel kernel = new StandardKernel();
kernel.Load("c:\path\to\NinjectModules.xml");

IOwl owl = kernel.Get<IOwl>();
owl.Fly();
0 голосов
/ 13 февраля 2016

После того, как я потерял субботу и просмотрел источник Ninject.Extensions.Xml, я решил свою проблему:

(...)
var settings = new NinjectSettings { LoadExtensions = false };
kernel = new StandardKernel(settings, new XmlExtensionModule());
kernel.Load(@"C:\DEV\FSENQUETE\invista.xml");
//kernel.GetModules().Count() --> Ok! Result 34 modules... :)
0 голосов
/ 24 декабря 2014

Получил решение:

Не забудьте установить для свойства Копировать в вывод для вашего XML-файла.подробнее см. PDF

...