2009-11-07 82 views
6

NInject中是否有設施可以讓我按需要從其他模塊(組件)加載服務,就像它在Unity中完成的一樣?是否可以根據需要加載模塊/組件?

+0

我想我不明白你的意思。你如何在Unity中「加載來自其他程序集的服務」? – Konamiman 2009-11-08 08:06:02

回答

12

我敢肯定這是你在找什麼:

var kernel = new StandardKernel(); 
kernel.Load(Assembly.Load("yourpath_to_assembly.dll"); 

如果你看看KernelBase與Ninject反射器。 dll的你會看到,這個調用將遞歸加載在加載的程序集的所有模塊(Load方法需要一個IEnumerable)

public void Load(IEnumerable<Assembly> assemblies) 
{ 
    foreach (Assembly assembly in assemblies) 
    { 
     this.Load(assembly.GetNinjectModules()); 
    } 
} 
3

我不太下支持「Like Unity」的意思,但您可以爲加載程序集做一些不同的事情。 Ninject本身默認會爲擴展/插件加載本地程序集。 Ninject也可以從程序集中加載NinjectModule類。如果你想做更復雜的事情,你可以使用Ninject.Extensions.Conventions項目做很多不同的掃描和類型綁定。

+0

您能否提供關於如何使Ninject「從程序集加載NinjectModule類」的更多細節? Ninject的wiki涵蓋了非常基本的東西。 – 2010-07-13 10:35:19

+0

好吧,我現在知道了,我在我的項目中混合了Ninject版本。 – 2010-07-13 12:50:17

+0

提供的GitHub鏈接已損壞。實際鏈接是https://github.com/ninject/Ninject.Extensions.Conventions。 – realsonic 2018-01-18 17:28:52

相關問題