私の無知を許してください。しかし、私はIOCとNinJectにとって非常に新しいです。私は簡単に理解できる解決策のために高低を探しましたが、今のところ彼らは私を逃しました。もつとも引数を持つNinjectバインディングコンストラクタ/ Entity Framework接続文字列
public class MyDbContext : DbContext
{
public MyDbContext() : base("MyAppConfig")
{
}
........
}
:
private class StandardModule : NinjectModule
{
public override void Load()
{
Bind<ILog>().To<NLogLogger>(); // Use NLog
Bind<IMyEntityFrameWorkRepository().To<MyEntityFrameWorkRepository>();
}
}
MyEntityFrameWorkRepositoryはその後、アプリ/ web.configファイルで宣言された接続文字列を経由して、独自のEF DbContextを作成します。
は、これまでのところ私は、次のと予想されるように、すべての作品を持っています!!私の目標は、このようなものである - 私はこの構文は「ナンセンス」であると認識(と私は私もIOC MyDbConextに持っているかもしれないと思う)が、私は「擬似コードは、」私の願望を伝える願っています:
private class StandardModule : NinjectModule
{
public override void Load()
{
Bind<ILog>().To<NLogLogger>(); // Use NLog
string mySqlConnectionString = MyApp.GetCommandLineArgument("sqlconn"); // "Data Source=..."
Bind<IMyEntityFrameWorkRepository().To<MyEntityFrameWorkRepository>(mySqlConnectionString);
}
}
.................
public class MyDbContext : DbContext
{
public MyDbContext(string sqlConnectionString) :
base(sqlConnectionString) // will accept a standard SQL connection string
{
}
........
}
どんな "パターン"も他のシナリオでは非常に役立つと確信しているので、IOC/NinJectの専門家からのフィードバックを本当に感謝します。
TY ..私は私の検索中にこの構造を見ていましたが、何らかの理由で私は常に(connectionStringの "範囲"について)心配していました...しかし、あなたの簡潔な例では、バインディング時の_value_重要。 – JcMaltaDev
には、魔法の文字列を使わないでそれを行う方法があるので、ninjectはどのオーバーロードを知っていますか? – Maslow
@Maslow私はあなたがNinject 2.2でそれを行うことはできないと思います。しかし、今後の変更点については、この[blog post](http://www.planetgeek.ch/2011/05/28/ninject-constructor-selection-preview/)をお読みください。 – mrydengren