2011-01-10 18 views
5

He estado buscando en Internet cualquier muestra o artículo de inicio sobre cómo enlazar con Ninject usando la extensión XML, pero no he podido encontrar ayuda. ,Encuadernación de configuración de Ninject y XML

¿Puede algún organismo proporcionarme una muestra muy pequeña de cómo puedo hacer eso?

gracias de antemano

Respuesta

3

No puedo encontrar ningún ejemplo o bien, pero sinceramente el código fuente es muy pequeña - me acaba de descargar (here) y leer a través de los casos de prueba.

El proyecto de prueba de unidad tiene algunos ejemplos, como este:

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

No parece ser muy potente. Como someone else pointed out, el objetivo de NInject es 'liberarse de XML'.

+0

dónde utilizar esto en web.config, en virtud del cual elemento padre hace esto entra? – Yasser

2

Su única documentación muestra cómo es la configuración de xml, pero no dan un ejemplo de cómo cargarla, así que aquí hay un ejemplo simple que muestra ambas piezas del rompecabezas.

XML Config

Esto sería en un archivo llamado NinjectModules.xml. Para que encuentre el tipo, tuve que darle el nombre calificado de ensamblado, aunque todo estaba en un solo .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> 

Cargando Config

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

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

consiguió la Solución:

no se olvide de establecer la copia a la salida de su archivo xml propiedad Directorio de este archivo a copiar si es más nuevo , para que pueda copiarse automáticamente en el directorio de salida . para más, ver esto PDF

0

Después perdido el sábado y revisar la Fuente Ninject.Extensions.Xml, resuelvo mi problema:

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