繁体   English   中英

如何获取 Nullable 数据类型的类型?

[英]How to get type of Nullable data type?

我在数据库中定义了字段的数据类型。 我想将字段的值转换为其特定的数据类型。 下面的代码适用于System.Int32

 var fieldValue = "1234";
 var fieldDataType = "System.Int32";
 var type = Type.GetType(fieldDataType);
 TypeConverter typeConverter = TypeDescriptor.GetConverter(type);
 var result = typeConverter.ConvertFromString(fieldValue);

但是,当 dataType 为System.Nullable<System.Int32>时它不起作用

Nullable Integer DataType 的有效值是多少? (我将对其他数据类型使用相同的)

编辑1(更多细节)
在数据库中,我定义了字段及其数据类型。 我在 UI 上为每个字段动态呈现TextBox 当用户提交form时,我在ASP.NET Core中使用自定义 model 绑定将这些字段绑定到 JObject。 像下面的东西

var model = new MyModel()
   {
     CustomFields = new JObject()
   };

foreach(var key in form.Keys)
{
    var val = form[key];

    var fields = GetFieldsFromDB();
    var field = fileds.Where(x=>x.FieldName == key).Single();
    

     TypeConverter typeConverter = TypeDescriptor.GetConverter(Type.GetType(field.DataType);
       var result = typeConverter.ConvertFromString(fieldValue);

     model.CustomFields.Add(key,result);
    
  
}

我试图避免switch语句或if else for each available.Net DataTypes

您需要使用内部类型名称:

var fieldDataType = "System.Nullable`1[System.Int32]";

这也是通过以下方式计算的:

var fieldDataType = "" + typeof(Nullable<int>);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM