C# 如何移植Unity';从fluent配置到XML配置?

C# 如何移植Unity';从fluent配置到XML配置?,c#,asp.net-mvc,entity-framework,unity-container,C#,Asp.net Mvc,Entity Framework,Unity Container,我在控制器中使用构造函数注入,通过在DI容器中注册的contextFactory处理多个上下文(EF代码优先)。我有3个ProductXContext,它们继承自我的CoreContext。我在一个单独的项目中有每个上下文。目前它们都在我的MCV项目中引用。 我希望保留引用的基本上下文(CoreContext),但删除ProductXContext引用,并在运行时使用Unity解析和注入依赖项 目前,我正在使用fluent配置设置容器: var container = new UnityCont

我在控制器中使用构造函数注入,通过在DI容器中注册的contextFactory处理多个上下文(EF代码优先)。我有3个ProductXContext,它们继承自我的CoreContext。我在一个单独的项目中有每个上下文。目前它们都在我的MCV项目中引用。 我希望保留引用的基本上下文(CoreContext),但删除ProductXContext引用,并在运行时使用Unity解析和注入依赖项

目前,我正在使用fluent配置设置容器:

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;
    }
...
}
因此,如果要从MVC项目中删除ProductXContext引用,我似乎必须切换到XML配置,因为要编译流畅的代码,必须有对所有代码的引用。但我现在想到了:

  • 如何在XML配置中声明InjectionFactory
  • 如果我成功声明了它,那么如何在ContextFactory中实例化ProductXContext,因为我不再引用它们了。
  • PS:有没有一种方法可以使用XML配置注册外部类型,然后使用fluent配置声明injectionFactory


    提前谢谢

    如果您需要在不直接引用ProductXContext项目的情况下支持后期绑定,有其他解决方案。包含增强的Unity配置引擎,允许您扫描程序集以查找特定类型的实现,并自动注册它们。它还有一个来自Castle Windsor的功能,名为类型化工厂,可以自动生成工厂,如您的ContextFactory。

    看看这是否有用:@Catalin是的,我看到了,但实际上没有太大帮助。看起来不错,但我在任何地方都找不到它的下载链接。主页上没有可下载的版本。@HenriqueMiranda您必须下载源代码。近期没有计划发布。糟糕的是,我完全错过了“源代码”选项卡。:)@HenriqueMiranda如果我的回答有帮助的话,如果你能这样做就好了。