Unity 容器解析部分 类

Unity container resolve with partial classes

我在使用 Unity 注入具有两个部分 classes 的依赖项时遇到问题。这就是我所做的:

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);

使用上面的代码,我得到一个关于我的数据库为空的异常。但是,如果我删除一个部分 class,那么我将只有一个部分 class,一切正常。如果您能对此表示满意,我将不胜感激。

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

删除其中一个接口。其中一个 classes 实现了它,所以另一个不能。请记住,部分 class 是在单个 class 中编译在一起的,因此您不能让两个部分都实现相同的接口,因为一旦合并,就不知道哪个部分正在实际实现它。

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

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