我有一个包含 2 列的 sql 表,不包括 PK 等
DataType Value
--------------------------------------
System.String Demo
System.Int32 23
System.Decimal 184,54
System.DateTime 2018-04-25 08:57:27.6305273
如何动态解析 Value
列中的值,作为 DataType
列中指定的类型。也可以有不同的数据类型:bool、double 等(总是标准的。没有海关数据类型,所以我不需要获取程序集等)
当然我可以有一个愚蠢的解决方案,例如:
object value;
if (DataType == "System.String")
{
value = Convert.ToString(XXXX);
}
是否有更好的通用方法来动态解析它?
编辑:
大家怎么看这件事?是不是矫枉过正了?
Type oType = Type.GetType("System.String");
using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(VALUE_IN_HERE)))
{
stream.Seek(0, SeekOriginal.Begin);
var dcs = new DataContractSerializer(oType);
return dcs.ReadObject(stream);
}
最佳答案
存储数据类型似乎是一种反模式,但您可以这样做:
Type t = Type.GetType(DataType);
value = Convert.ChangeType(XXXX, t);
关于c# - 解析类型为字符串的动态数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52428415/