将 Unity 升级到 5.11

Upgrading Unity to 5.11

我们有一个旧代码

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

现在必须

public override void PreBuildUp(ref BuilderContext context)
{

现在BuilderContext类型的contextOriginalBuildKey属性对应的是什么?想不通了。

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

Comparing the current version of 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;
        }

我的单元测试通过了。