OK Dependency Ninja's、ここにあなたのための1つがあります...
カーネルから要求しているタイプに基づいて、Ninject が依存関係を構築する方法を変更したいと考えています。
次のコンストラクタを持つ DbConnectionFactory クラスがあります。
public DbConnectionFactory()
: this(MyDatabase.ConnectionString)
{
}
public DbConnectionFactory(string connectionString)
: this(DbProviderFactories.GetFactory("System.Data.SqlClient"), connectionString)
{
}
「デフォルト」バインディングの場合、Ninject にパラメーターなしのコンストラクターを使用してもらいます。
this.Bind<IDbConnectionFactory>().To<DbConnectionFactory>();
コード内の特定のクラスでは、connectionString パラメータを提供するために Ninject が必要です。私は次のようにバインディングをセットアップしようとしました:
this.Bind<IDbConnectionFactory>().To<DbConnectionFactory>().Only(
When.Context.InstanceOf(typeof(IRepository))).WithArgument(
"connectionString", MyOtherDatabase.ConnectionString);
ただし、Ninject でデフォルトのコンストラクターを使用することしかできません。
明らかな何かが欠けているに違いありません!