public string GetPrimitiveValue(CorType type, out byte[] bytes) { bytes = null; if (type == null) { return("Internal error: CorType is null"); } if (type.IsEnum) { return(GetEnumValue(type, out bytes)); } string error; var etype = type.TryGetPrimitiveType(); switch (etype) { case CorElementType.Boolean: { var value = SimpleTypeConverter.ParseBoolean(text, out error); if (!string.IsNullOrEmpty(error)) { return(error); } bytes = BitConverter.GetBytes(value); return(null); } case CorElementType.Char: { var value = SimpleTypeConverter.ParseChar(text, out error); if (!string.IsNullOrEmpty(error)) { return(error); } bytes = BitConverter.GetBytes(value); return(null); } case CorElementType.R4: { var value = SimpleTypeConverter.ParseSingle(text, out error); if (!string.IsNullOrEmpty(error)) { return(error); } bytes = BitConverter.GetBytes(value); return(null); } case CorElementType.R8: { var value = SimpleTypeConverter.ParseDouble(text, out error); if (!string.IsNullOrEmpty(error)) { return(error); } bytes = BitConverter.GetBytes(value); return(null); } case CorElementType.Class: case CorElementType.ValueType: if (type.IsSystemDecimal) { var value = SimpleTypeConverter.ParseDecimal(text, out error); if (!string.IsNullOrEmpty(error)) { return(error); } bytes = GetBytes(value); return(null); } return(null); case CorElementType.I: case CorElementType.U: case CorElementType.Ptr: case CorElementType.FnPtr: if (text.Trim() == "null") { bytes = new byte[IntPtr.Size]; return(null); } break; } ulong?res = ParseIntegerConstant(etype, text, out error); if (res == null) { return(error ?? dnSpy_Debugger_Resources.LocalsEditValue_Error_InvalidNumber); } switch (etype) { case CorElementType.I1: bytes = new byte[1] { (byte)res.Value }; return(null); case CorElementType.U1: bytes = new byte[1] { (byte)res.Value }; return(null); case CorElementType.I2: bytes = BitConverter.GetBytes((short)res.Value); return(null); case CorElementType.U2: bytes = BitConverter.GetBytes((ushort)res.Value); return(null); case CorElementType.I4: bytes = BitConverter.GetBytes((int)res.Value); return(null); case CorElementType.U4: bytes = BitConverter.GetBytes((uint)res.Value); return(null); case CorElementType.I8: bytes = BitConverter.GetBytes((long)res.Value); return(null); case CorElementType.U8: bytes = BitConverter.GetBytes(res.Value); return(null); case CorElementType.I: case CorElementType.U: case CorElementType.Ptr: case CorElementType.FnPtr: if (IntPtr.Size == 4) { goto case CorElementType.I4; } goto case CorElementType.I8; } return("Unknown number type"); }