From 318b09131755499a1909a960e635470d2a856627 Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Sun, 24 Aug 2014 18:17:00 +0200 Subject: [PATCH] C# decompilation for unbox.any --- ICSharpCode.Decompiler/CSharp/ExpressionBuilder.cs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/ICSharpCode.Decompiler/CSharp/ExpressionBuilder.cs b/ICSharpCode.Decompiler/CSharp/ExpressionBuilder.cs index 574b18ddc..75036bade 100644 --- a/ICSharpCode.Decompiler/CSharp/ExpressionBuilder.cs +++ b/ICSharpCode.Decompiler/CSharp/ExpressionBuilder.cs @@ -379,6 +379,18 @@ namespace ICSharpCode.Decompiler.CSharp UnaryOperatorType.Dereference, target.ConvertTo(new PointerType(type), this)), type); } + + protected internal override ConvertedExpression VisitUnboxAny(UnboxAny inst) + { + var arg = ConvertArgument(inst.Argument); + Expression expr = arg.Expression; + if (arg.Type.IsReferenceType != true) { + // ensure we treat the input as a reference type + expr = arg.ConvertTo(compilation.FindType(KnownTypeCode.Object), this); + } + expr = new CastExpression(ConvertType(inst.Type), expr); + return new ConvertedExpression(expr, cecilMapper.GetType(inst.Type)); + } protected override ConvertedExpression Default(ILInstruction inst) {