Ninject - конструкторы привязки с аргументами / строка подключения Entity Framework

Прошу простить меня за невежество, но я новичок в 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")
   {
   }
   ........
}

ОДНАКО !! Моя цель примерно такая - я понимаю, что этот синтаксис - "ерунда" (и я думаю , что мне, возможно, тоже придется использовать 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, поскольку я уверен, что любой «шаблон» может быть очень полезен в других сценариях.

19
задан Ruben Bartelink 24 July 2011 в 16:16
поделиться