Пожалуйста, простите мое невежество, но я очень новичок в IOC и NinJect. Я искал высокий и низкий для легко понятных решений, но до сих пор они ускользали от меня.
До сих пор у меня есть следующие и все работает как ожидалось:
private class StandardModule : NinjectModule
{
public override void Load()
{
Bind<ILog>().To<NLogLogger>(); // Use NLog
Bind<IMyEntityFrameWorkRepository().To<MyEntityFrameWorkRepository>();
}
}
MyEntityFrameWorkRepository создает собственный EF DbContext через строку соединения, объявленную в app/web.config:
public class MyDbContext : DbContext
{
public MyDbContext() : base("MyAppConfig")
{
}
........
}
ОДНАКО!! Моя цель - это что-то вроде этого. Я понимаю, что этот синтаксис - это "нонсенс" (и я думаю, что, возможно, мне тоже придется использовать MyCb), но я надеюсь, что "псевдокод" передает мое желание:
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, так как я уверен, что любой "шаблон" может быть очень полезен в других сценариях.