Unity容器通过部分类解析

时间:2016-07-01 22:35:10

标签: c# dependency-injection unity-container

当我使用Unity注入两个部分类的依赖项时,我遇到了一个问题。这就是我所做的:

public partial class MyDbContext : IMyDbContext
{
    // code
}

public partial class MyDbContext : IMyDbContext
{
     // code
}

public interface IMyDbContext
{
    // code
}

var container = new UnityContainer();
container.RegisterType<IMyDbContext,      
MyDbContext>(new HierarchicalLifetimeManager());
config.DependencyResolver = new UnityResolver(container);

使用上面的代码,我得到一个关于我的db为null的例外。但是,如果我删除一个部分类,所以我只有一个部分类,一切正常。如果你能在这方面取悦,我会非常感激。

编辑: 当我处于调试模式时,Unit容器GetService方法捕获异常ResolutionFailedException。

2 个答案:

答案 0 :(得分:0)

删除其中一个界面。其中一个部分类实现它,而另一个不能。请记住,部分类在一个类中一起编译,因此您不能让两个部分实现相同的接口,因为一旦合并,不知道哪个部分实际实现了它。

答案 1 :(得分:0)

我通过注册实例而不是类型解决了这个问题。 但是,欢迎任何其他解决方案。

var container = new UnityContainer();
MyDbContext context = new MyDbContext()
container.RegisterInstance<IMyDbContext>(context);
config.DependencyResolver = new UnityResolver(container);