0

ASP.NET MVC プロジェクトで依存性注入に Ninject を使用しています。多くのリポジトリ クラスがあり、各クラスはコンストラクターで接続文字列パラメーターを取ります。

現在、マッピングごとに接続文字列も渡す必要があります。

元。

Bind<INewsRepository>().To<NewsRepository>().WithConstructorArgument("connectionString", "Data Source=...");
Bind<IProductsRepository>().To<ProductsRepository>().WithConstructorArgument("connectionString", "Data Source=...");

各バインディングで指定する代わりに、「connectionString」をグローバルレベルで構成値に直接バインドすることは可能ですか?

4

2 に答える 2

4

私の解決策は次のとおりです。接続文字列をオブジェクトにラップし、たとえば ConnectionStringWrapper にして、Interface IConnectionStringWrapper を作成します。リポジトリでインターフェイスを使用し、Ninjects を使用して ConnectionStringWrapper をインターフェイスにバインドします。

于 2012-04-05T08:54:24.563 に答える
3

これは私が思いついた最高のものです

拡張メソッドの作成

    public static class IBindingExtensions
    {
         public static IBindingWithOrOnSyntax<T> WithConnectionString<T>(this IBindingWhenInNamedWithOrOnSyntax<T> binding)
         {
             return binding.WithConstructorArgument("connectionString", "Data Source=..");
         }
    }

そして、すべての接続文字列引数バインディングに対して呼び出します

Bind<INewsRepository>().To<NewsRepository>().WithConnectionString();
于 2012-04-05T07:58:16.570 に答える