Ninject and XML configuration Binding

这一生的挚爱 提交于 2019-12-30 09:30:05

问题


i have been searching the internet for any sample or getting start article on how to do binding with Ninject using XML extension but i couldnt find any help ! ,

can any body provide me with a very small sample on how can i do that ?

thanks in advance


回答1:


I can't find any examples either, but honestly the source code is very small - I would just download (here) and read through the test cases.

The unit test project has some examples, like this:

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

It doesn't seem to be very powerful. As someone else pointed out, the point of NInject is to 'free yourself from XML'.




回答2:


Their only documentation shows what the xml config looks like but they don't give an example of how to load it so here is a simple example which shows both pieces of the puzzle.

Xml Config

This would be in a file called NinjectModules.xml. For it to find the type, I had to give it the assembly qualified name, even though everything was in a single .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> 

Loading Config

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

IOwl owl = kernel.Get<IOwl>();
owl.Fly();



回答3:


After lost my saturday and review the Ninject.Extensions.Xml Source, I solve my problem:

(...)
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... :)



回答4:


Got the Solution:

Don't forget to set the Copy to Output of your xml file Directory property of this file to Copy if newer, so that it can be copied to the output directory automatically. for more, see this PDF



来源:https://stackoverflow.com/questions/4647972/ninject-and-xml-configuration-binding

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!