繁体   English   中英

Ninject和XML配置绑定

[英]Ninject and XML configuration Binding

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

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

提前致谢

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

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

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

他们唯一的文档显示了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();

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

得到了解决方案:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM