diff --git a/Source/VSProj/Src/Tools/CodeTranslator.cs b/Source/VSProj/Src/Tools/CodeTranslator.cs index 104bc51..0020c55 100644 --- a/Source/VSProj/Src/Tools/CodeTranslator.cs +++ b/Source/VSProj/Src/Tools/CodeTranslator.cs @@ -1261,6 +1261,26 @@ unsafe MethodIdInfo getMethodId(MethodReference callee, MethodDefinition caller, } } + //修复out struct问题 + for (int i = 0; i < method.Parameters.Count; i++) + { + var parameter = method.Parameters[i]; + if (parameter.IsOut && parameter.ParameterType.GetElementType().IsValueType && !parameter.ParameterType.GetElementType().IsPrimitive) + { + code.Add(new Core.Instruction + { + Code = Core.Code.Ldarg, + Operand = i + (method.HasThis ? 1 : 0) + }); + code.Add(new Core.Instruction + { + Code = Core.Code.Initobj, + Operand = addExternType(parameter.ParameterType.GetElementType()) + }); + offsetAdd += 2; + } + } + if (offsetAdd > 0) { var ilNewOffset = new Dictionary();