2011-01-10 102 views
5

我一直在搜索互聯網上的任何示例或獲取開始文章如何使用XML擴展與Ninject綁定,但我無法找到任何幫助! ,Ninject和XML配置綁定

任何機構都可以提供一個非常小的樣本,我該怎麼做?

在此先感謝

回答

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中解脫」。

+0

凡在web.config中使用,其下的父元素呢這進入? – Yasser 2012-10-05 13:00:34

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(); 
-1

得到了解決:

不要忘記複製設置爲該文件的XML文件 Directory屬性的輸出是否有更新的複製,以便它可以自動複製到 輸出目錄。 更多的,請參閱本PDF

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