Я использую инъекцию конструктора в мои контроллеры для работы с несколькими контекстами (сначала код EF) через contextFactory, зарегистрированный в моем контейнере DI.У меня есть 3 ProductXContexts, которые наследуются от моего CoreContext.У меня каждый контекст в отдельном проекте.В настоящее время они все упоминаются в моем проекте MCV.Я хочу сохранить базовый контекст (CoreContext) со ссылками, но удалить ссылки ProductXContext и использовать Unity для разрешения и внедрения зависимостей во время выполнения.
В настоящее время я использую свободную конфигурацию для настройки моего контейнера:
var container = new UnityContainer();
container.RegisterType<CoreContext>(new InjectionFactory(c => ContextFactory.CreateContext()));
Фабрика контекста выглядит следующим образом:
public static CoreContext CreateContext()
{
var userProduct = HttpContext.Current.Session["Product"] as string;
CoreContext context;
switch (userProduct)
{
case null:
throw new Exception("No product is selected. Can't define an appropriate context.");
case "Product 1":
context = new Product1Context();
break;
case "Product 2":
context = new Product2Context();
break;
case "Product 3":
context = new Product3Context();
break;
default:
throw new Exception("Current product is not supported. Can't define an appropriate context.");
}
return context;
}
А контроллеры выглядят так:
public class MyController : Controller
{
private CoreContext _context;
public MyController(CoreContext context)
{
_context = context;
}
...
}
Так что, похоже, мне придется переключиться на конфигурацию XML, если яЯ собираюсь удалить ссылки ProductXContext из моего проекта MVC, поскольку для компиляции свободного кода у вас должны быть ссылки на весь код.Но теперь у меня есть идея:
- , как объявить InjectionFactory в конфигурации XML.
- если мне удастся объявить это, как создать экземпляр ProductXContext внутри моей ContextFactory, поскольку у меня больше нет ссылок на них.
PS: есть лиспособ регистрации внешних типов с помощью XML-конфигурации, а затем объявитьjectionFactory с помощью Fluent config?
Заранее спасибо!