1

我在MVC3應用程序中使用Ninject,並試圖切換到基於ninject.extensions.conventions的約定。使用基於ninject和約定的綁定處理應用程序設置

現在讓我們假設我有一個需要訪問應用程序設置,如類:

public class Foo : IFoo 
{ 
    public Foo(string connectionString) 
    { ... } 
} 

我想我明白該怎麼做正常的約束力與Ninject是這樣的:

Bind<IFoo>() 
    .To<Foo>() 
    .WithConstructorArgument(
    "connectionString", 
    ConfigurationManager.ConnectionStrings["Default"].ConnectionString); 

但我如何使用約定來做這件事?如果需要的話


額外信息:

我使用的NuGet Ninject.MVC3封裝,App_Start/NinjectWebCommon.cs的RegisterServices這是我目前有:

kernel.Bind(x => x 
       .FromAssembliesMatching("*") 
       .SelectAllClasses() 
       .BindDefaultInterface()); 

回答

1

Ninject約定是爲了讓你的工作的90%,10%的成本。如果您認爲您需要在頂部添加一個附加綁定,請不要擔心。

但在您的情況下,我不會過多擔心通過構造函數注入連接字符串,而只是手動抓取它。或者,你可以設置一個IDatabaseConfig接口和可以爲你實現的實現,你的基於約定的綁定應該直接選擇它。我們在我們的項目上做了更高版本

+0

我做了一些像您的IDatabaseConfig的想法,它工作得很好。很高興知道我正朝着一個好的方向前進,謝謝! – 2012-08-10 21:07:15

相關問題