如果缺少Unity寄存器类型映射?

时间:2010-07-02 17:07:24

标签: configuration unity-container override

这类似于This question,但答案并没有解决我的问题。

我想在代码中注册接口的默认实现,但是能够在运行代码之前读取的配置中覆盖它。

我想做点什么

if (!container.IsImplementationRegistered(typeof(TInterface))
{
  container.RegisterType<TInterface, TImplementation>();
}

我不能使用TryResolve,因为我将连续注册几个类型,这些类型可能具有尚未注册的自己的依赖项,从而导致错误的覆盖。

Unity 2.0是否会启用此功能,还是有办法在1.2中启用它?

1 个答案:

答案 0 :(得分:0)

也许您可以尝试使用子容器。

  1. 在代码中创建容器
  2. 使用CreateChildContainer()
  3. 创建子容器
  4. 配置从配置文件中读取的子容器
  5. 在应用程序中使用子容器。
  6. 如果子容器无法解析类型,Unity将转到父容器进行解析。