[英]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.