将 Unity 升级到 5.11

hya*_*kov 2 unity-container

我们有一个旧代码

public override void PreBuildUp(IBuilderContext context)
{
  var type = context.OriginalBuildKey.Type;
Run Code Online (Sandbox Code Playgroud)

现在必须是

public override void PreBuildUp(ref BuilderContext context)
{
Run Code Online (Sandbox Code Playgroud)

与现在类型OriginalBuildKey中的属性对应的是什么?我想不通。contextBuilderContext

Mar*_*ton 5

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

将当前版本的BuilderContext.cs与早期的 5.9 版本进行比较,我看到的变化是

[DebuggerDisplay("Resolving: {OriginalBuildKey.Type},  Name: {OriginalBuildKey.Name}")]
    public class BuilderContext : IBuilderContext
Run Code Online (Sandbox Code Playgroud)

    [DebuggerDisplay("Resolving: {Type},  Name: {Name}")]
    public struct BuilderContext : IResolveContext
Run Code Online (Sandbox Code Playgroud)

所以正如你提到的,我改变了我的代码

[DebuggerDisplay("Resolving: {OriginalBuildKey.Type},  Name: {OriginalBuildKey.Name}")]
    public class BuilderContext : IBuilderContext
Run Code Online (Sandbox Code Playgroud)

通过引用使用 BuilderContext

    [DebuggerDisplay("Resolving: {Type},  Name: {Name}")]
    public struct BuilderContext : IResolveContext
Run Code Online (Sandbox Code Playgroud)

我现在使用的地方OriginalBuildKey.Type已经改变了

        public override void PreBuildUp(IBuilderContext context)
        {
Run Code Online (Sandbox Code Playgroud)

        public override void PreBuildUp(ref BuilderContext context)
        {
Run Code Online (Sandbox Code Playgroud)

我的单元测试已经通过了。