将Unity升级到5.11

时间:2019-07-17 04:14:49

标签: unity-container

我们有一个旧代码,其中有

public override void PreBuildUp(IBuilderContext context)
{
  var type = context.OriginalBuildKey.Type;

现在必须是

public override void PreBuildUp(ref BuilderContext context)
{

现在类型为OriginalBuildKey的{​​{1}}中的context属性对应什么?我不知道。

1 个答案:

答案 0 :(得分:1)

我最近在尝试将AutoMoq-Unity5更新到Unity 5.11时遇到了同样的问题。

Comparing的当前版本BuilderContext.cs与更早的5.9版本

来自

[DebuggerDisplay("Resolving: {OriginalBuildKey.Type},  Name: {OriginalBuildKey.Name}")]
    public class BuilderContext : IBuilderContext

收件人

    [DebuggerDisplay("Resolving: {Type},  Name: {Name}")]
    public struct BuilderContext : IResolveContext

所以正如您提到的,我将代码从更改为

        public override void PreBuildUp(IBuilderContext context)
        {

要通过引用使用BuilderContext

        public override void PreBuildUp(ref BuilderContext context)
        {

在我使用OriginalBuildKey.Type的地方,我现在已经从

        private static Type GetTheTypeFromTheBuilderContext(IBuilderContext context)
        {
            return (context.OriginalBuildKey).Type;
        }

        private static Type GetTheTypeFromTheBuilderContext(IResolveContext context)
        {
            return context.Type;
        }

我的单元测试通过了。