Я использую инжектор конструктора в своих контроллерах для работы с несколькими контекстами (сначала код EF) через contextFactory, зарегистрированный в моем контейнере DI. У меня есть 3 ProductXContexts, которые наследуются от моего CoreContext. У меня есть каждый контекст в отдельном проекте. В настоящее время все они упоминаются в моем проекте MCV. Я хочу, чтобы базовый контекст (CoreContext) ссылался, но удалял ссылки ProductXContext и использовал Unity для разрешения и ввода зависимостей во время выполнения.Как переносить свободную конфигурацию Unity в конфигурацию XML?
В настоящее время я использую свободно конфигурацию, чтобы настроить мой контейнер:
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 s из моего проекта MVC, так как для компиляции свободного кода вы должны иметь ссылки на весь код. Но у меня теперь есть идея:
- как объявить инжекциюFactory в конфигурации XML.
- , если мне удастся объявить об этом, как создать экземпляр ProductXContext внутри моего ContextFactory, так как у меня больше нет ссылки на них.
PS: Есть ли способ зарегистрировать внешние типы, используя конфигурацию XML, а затем объявить функцию injectionFactory с помощью свободной конфигурации?
Заранее благодарен!
Посмотрите, если это поможет: http://stackoverflow.com/questions/7143089/how-to-declare-the-unity-injectionfactory-in-xml-configuration –
@Catalin Да, я видел это, но это не так. На самом деле это очень помогает. –