c# - 解析类型为字符串的动态数据

标签 c# types

我有一个包含 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/

相关文章:

c# - 获取哪些值使数组中给定数字的总和的算法

c# - SqlCommand INSERT INTO 从 datagridview 到 SQL DB 表

c# - 如何在 C# 中更改变量类型?

javascript - firebase 登录后 TypeScript 返回对象

c# - ASP.NET Core 在默认域 (*.azurewebsites.net) 上跨 Azure Web 应用程序共享身份 Cookie

c# - 结合 Interlocked.Increment 和 Interlocked.Exchange

c# - 如何将 SetBasePath 设置为 Program.Main 上的 dll 位置

c - EXIF 数据类型解释

haskell - Rank2Types 的目的是什么?

java - 如何检查 java.lang.reflect.Type 是否为枚举