1

私はMVC3アプリケーションでNinjectを使用しており、ninject.extensions.conventionsを使用したコンベンションベースのバインディングに切り替えようとしています。

ここで、次のようなアプリケーション設定にアクセスする必要があるクラスがあるとします。

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

私はこのようにNinjectで通常のバインディングを行う方法を理解していると思います:

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

しかし、代わりに規則を使用してこれを行うにはどうすればよいですか?


必要に応じて追加情報:

私はnugetNin​​ject.MVC3パッケージを使用しており、App_Start / NinjectWebCommon.csのRegisterServicesでは、これが現在持っているすべてです。

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

1 に答える 1

1

Ninject Conventionsは、コストの10%で作業の90%を取得するためにあります。その上にバインディングを追加する必要があると思われる場合でも、心配する必要はありません。

しかし、あなたのシナリオでは、コンストラクターを介して接続文字列を挿入せず、手動で取得することについてはあまり心配しません。または、IDatabaseConfigインターフェイスと実装をセットアップして、それを実行することもできます。コンベンションベースのバインディングは、それを正しく取得する必要があります。私たちはプロジェクトで後で行います

于 2012-08-10T20:54:57.533 に答える