[英]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.