我一直在互联网上搜索任何样本或获取有关如何使用XML扩展与Ninject绑定的开始文章,但我无法找到任何帮助! ,
任何机构都可以向我提供一个非常小的样本,我该怎么做?
提前致谢
答案 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