using System; using System.Collections.Generic; using System.Text; namespace ReZero.SuperAPI { internal class EntityPropertyMappingService { public static object ConvertValue(object value, string valueType) { switch (valueType) { case "Boolean": return Convert.ToBoolean(value); case "Byte": return Convert.ToByte(value); case "SByte": return Convert.ToSByte(value); case "Char": return Convert.ToChar(value); case "Decimal": return Convert.ToDecimal(value); case "Double": return Convert.ToDouble(value); case "Single": return Convert.ToSingle(value); case "Int32": return Convert.ToInt32(value); case "UInt32": return Convert.ToUInt32(value); case "Int64": return Convert.ToInt64(value); case "UInt64": return Convert.ToUInt64(value); case "Int16": return Convert.ToInt16(value); case "UInt16": return Convert.ToUInt16(value); case "String": return Convert.ToString(value); case "DateTime": return Convert.ToDateTime(value); case "Guid": return new Guid(Convert.ToString(value)); case "Byte[]": // 假设 value 是字节数组的合法表示(例如十六进制字符串),进行转换 return HexStringToByteArray(Convert.ToString(value)); default: return value; } } // 将十六进制字符串转换为字节数组 private static byte[] HexStringToByteArray(string hex) { if (hex.Length % 2 != 0) { throw new ArgumentException("Hex string must have an even number of characters."); } byte[] bytes = new byte[hex.Length / 2]; for (int i = 0; i < hex.Length; i += 2) { bytes[i / 2] = Convert.ToByte(hex.Substring(i, 2), 16); } return bytes; } } }