5

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

Stacker
  • 8,157
  • 18
  • 73
  • 135

4 Answers4

3

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

Community
  • 1
  • 1
cbp
  • 25,252
  • 29
  • 125
  • 205
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();
Despertar
  • 21,627
  • 11
  • 81
  • 79
0

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

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

rm-vanda
  • 3,122
  • 3
  • 23
  • 34