【问题标题】:Unity container resolve with partial classesUnity 容器使用部分类解析
【发布时间】:2016-11-04 09:51:42
【问题描述】:

当我使用 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);

使用上面的代码,我得到一个关于我的数据库为空的异常。但是,如果我删除一个部分类,那么我将只有一个部分类,一切正常。如果你能请你的话,我会非常感激。

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

【问题讨论】:

    标签: c# dependency-injection unity-container


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 感谢您的回复。如果您打算从一个部分类中删除接口,我已经尝试过但仍然无法正常工作。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-11
      • 1970-01-01
      • 1970-01-01
      • 2015-12-13
      相关资源
      最近更新 更多