2011-05-16 20 views
1

我有一個Ninject注入依賴項的類。其中一種注入類型與Ninject存在不同的組合。然而,我在Assembly1中註冊了該模塊。使用Ninject隱藏不同圖層的類型

/*Assembly1.Dll (Logical layer)*/ 
internal class InternalType {} 

public class Gobblin { 

    InternalType _iType; 

    internal Gobblin(InternalType iType) { 
    _iType = iType; 
    } 
} 

public class CommonModule : NinjectModule { 

    public override void Load() { 

    Bind<IInternalType>() 
     .To<InternalType>() 
     .InRequestScope(); 
    } 

} 
/*End assembly1 code*/ 

我的其他程序集是一個MVC web應用程序。我的一個控制器需要Gobblin類,但綁定失敗,因爲Ninject沒有找到構造函數。

據我所知,Ninject無法訪問Gobblin類的內部構造函數,但我認爲是因爲註冊該模塊的模塊包含在它本來可以工作的同一個程序集中。

我可以在這裏打破OO原則,並將InternalType公開,但我想知道是否有其他方法。

謝謝你的時間。

回答

2

你的程序集是Ninject本身的外部。默認配置不允許注入任何公共構造函數,屬性,...但您可以更改配置。看看NinjectSettings。