Ninject和XML配置绑定

时间:2011-01-10 14:43:55

标签: c# xml ninject

我一直在互联网上搜索任何样本或获取有关如何使用XML扩展与Ninject绑定的开始文章,但我无法找到任何帮助! ,

任何机构都可以向我提供一个非常小的样本,我该怎么做?

提前致谢

4 个答案:

答案 0 :(得分:3)

我也找不到任何例子,但老实说源代码非常小 - 我只是下载(here)并阅读测试用例。

单元测试项目有一些例子,如下:

<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>

它似乎不是很强大。作为someone else pointed out,NInject的目的是“从XML中解脱出来”。

答案 1 :(得分:2)

他们唯一的文档显示了xml配置的外观,但是他们没有举例说明如何加载它所以这里有一个简单的例子,它显示了这两个难题。

Xml配置

这将位于名为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();

答案 2 :(得分:0)

在我星期六失去并查看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... :)

答案 3 :(得分:-1)

得到了解决方案:

不要忘记设置xml文件的Copy to Output 此文件的目录属性如果更新则复制,以便可以将其复制到 输出目录自动。 有关更多信息,请参阅此PDF