示例#1
0
        private static bool HasFieldSimpleValue(ClrValueType item, ClrType type, string fieldName, out string content)
        {
            content = null;
            var typeName = type.Name;

            switch (typeName)
            {
            case "System.Char":
                content = $"'{item.ReadField<System.Char>(fieldName)}'";
                break;

            case "System.Boolean":
                content = item.ReadField <System.Boolean>(fieldName).ToString();
                break;

            case "System.SByte":
                content = item.ReadField <System.SByte>(fieldName).ToString();
                break;

            case "System.Byte":
                content = item.ReadField <System.Byte>(fieldName).ToString();
                break;

            case "System.Int16":
                content = item.ReadField <System.Int16>(fieldName).ToString();
                break;

            case "System.UInt16":
                content = item.ReadField <System.UInt16>(fieldName).ToString();
                break;

            case "System.Int32":
                content = item.ReadField <System.Int32>(fieldName).ToString();
                break;

            case "System.UInt32":
                content = item.ReadField <System.UInt32>(fieldName).ToString();
                break;

            case "System.Int64":
                content = item.ReadField <System.Int64>(fieldName).ToString();
                break;

            case "System.UInt64":
                content = item.ReadField <System.UInt64>(fieldName).ToString();
                break;

            case "System.Single":
                content = item.ReadField <System.Single>(fieldName).ToString();
                break;

            case "System.Double":
                content = item.ReadField <System.Double>(fieldName).ToString();
                break;

            case "System.IntPtr":
            {
                var val = item.ReadField <System.IntPtr>(fieldName);
                content = (val == IntPtr.Zero) ? "null" : $"0x{val.ToInt64():x}";
            }
            break;

            case "System.UIntPtr":
            {
                var val = item.ReadField <System.UIntPtr>(fieldName);
                content = (val == UIntPtr.Zero) ? "null" : $"0x{val.ToUInt64():x}";
            }
            break;

            default:
                return(false);
            }

            return(true);
        }