<PackageReference Include="Microsoft.CSharp" Version="4.5.0" />

ErrorHandling

static class ErrorHandling
using Microsoft.CSharp.RuntimeBinder.Semantics; using System; using System.Globalization; namespace Microsoft.CSharp.RuntimeBinder.Errors { internal static class ErrorHandling { public static RuntimeBinderException Error(ErrorCode id, params ErrArg[] args) { string[] array = new string[args.Length]; int[] array2 = new int[args.Length]; int num = 0; int num2 = 0; int num3 = 0; UserStringBuilder userStringBuilder = default(UserStringBuilder); for (int i = 0; i < args.Length; i++) { ErrArg errArg = args[i]; if ((errArg.eaf & ErrArgFlags.NoStr) == ErrArgFlags.None) { if (!userStringBuilder.ErrArgToString(out array[num], errArg, out bool fUserStrings) && errArg.eak == ErrArgKind.Int) array[num] = errArg.n.ToString(CultureInfo.InvariantCulture); num++; int num4; if (!fUserStrings || (errArg.eaf & ErrArgFlags.Unique) == ErrArgFlags.None) num4 = -1; else { num4 = i; num3++; } array2[num2] = num4; num2++; } } int num5 = num; if (num3 > 1) { string[] array3 = new string[num5]; Array.Copy(array, 0, array3, 0, num5); for (int j = 0; j < num5; j++) { if (array2[j] >= 0 && !(array3[j] != array[j])) { ErrArg errArg2 = args[array2[j]]; Symbol symbol = null; CType cType = null; bool flag; switch (errArg2.eak) { case ErrArgKind.Sym: symbol = errArg2.sym; goto IL_0156; case ErrArgKind.Type: cType = errArg2.pType; goto IL_0156; case ErrArgKind.SymWithType: symbol = errArg2.swtMemo.sym; goto IL_0156; case ErrArgKind.MethWithInst: { symbol = errArg2.mpwiMemo.sym; goto IL_0156; } IL_0156: flag = false; for (int k = j + 1; k < num5; k++) { if (array2[k] >= 0 && !(array[j] != array[k])) { if (array3[k] != array[k]) flag = true; else { ErrArg errArg3 = args[array2[k]]; Symbol symbol2 = null; CType cType2 = null; switch (errArg3.eak) { case ErrArgKind.Sym: symbol2 = errArg3.sym; goto IL_0206; case ErrArgKind.Type: cType2 = errArg3.pType; goto IL_0206; case ErrArgKind.SymWithType: symbol2 = errArg3.swtMemo.sym; goto IL_0206; case ErrArgKind.MethWithInst: { symbol2 = errArg3.mpwiMemo.sym; goto IL_0206; } IL_0206: if (symbol2 != symbol || cType2 != cType || flag) { array3[k] = array[k]; flag = true; } break; } } } } if (flag) array3[j] = array[j]; break; } } } array = array3; } CultureInfo invariantCulture = CultureInfo.InvariantCulture; string message = ErrorFacts.GetMessage(id); object[] args2 = array; return new RuntimeBinderException(string.Format(invariantCulture, message, args2)); } } }