【问题标题】:Missing CreateChildContainer in Unity 5.9.xUnity 5.9.x 中缺少 CreateChildContainer
【发布时间】:2019-02-06 18:44:40
【问题描述】:

Unity IoC 5.8.x 版本中曾经有一个方法UnityContainer.CreateChildContainer()。但是,自 5.9.x 版以来,它已经消失了。这是否意味着整个子容器功能已被删除?还有其他方法可以实现吗?

【问题讨论】:

  • 你是怎么断定没有CreateChildContainer的?
  • 此代码自 5.9.0 起无效:var container = new UnityContainer(); var child = container.CreateChildContainer();
  • 你能试试IUnityContainer container = new UnityContainer(); var child = container.CreateChildContainer();而不是var吗?
  • 是的,这行得通,因为 CreateChildContainer 现在(从 5.9.0 开始)是 UnityContainer 类中 IUnityContainer 的显式实现。

标签: c# unity-container ioc-container


【解决方案1】:

我确实假设您在定义UnityContainer 时尝试使用var 语法糖。由于版本 5.9.0 IUnityContainer.CreateChildContainerUnityContainer 中有显式实现。因此,使用var 可能会让人觉得CreateChildContainer 以及任何其他显式实现的方法都不存在了。

//Not possible with unity>=5.9.0, this way uc has access to class methods
var uc = new UnityContainer();
using(var child = uc.CreateChildContainer()){...}

//Possible with unity>=5.9.0, this way uc has access to interface methods
IUnityContainer uc = new UnityContainer();
using(var child = uc.CreateChildContainer()){...}

n.b.这通常是 var 和显式实现的接口方法的行为

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多