用于准备SQL表创建的值和类型处理的最佳方式
本文关键字:类型 处理 最佳 方式 用于 SQL 创建 | 更新日期: 2023-09-27 18:02:24
我有一个类,它代表一个动态表,这将在sql数据库中创建
public class DynamicTable
{
public List<DynamicField> fieldNames { get; set; }
}
DynamicField表示字段名和它的dataType的一对:
public class DynamicField
{
public Type type {get;set;}
public String fieldName {get;set;}
public DynamicField(String fieldName, Type datatype)
{
this.fieldName = fieldName;
this.type = datatype;
}
}
我担心的是,你可以传递任何你想要的类型,但我只需要一些特定的数据类型,如String, int, date,float。
我怎样才能改进我的代码,使它只可能传递它们?基于使用属性类型在sql数据库中正确创建表的想法,是否有比使用System更好的方法。型类型?
我猜您可以像下面这样对Generic进行约束。但我也猜它在你的动态场景中将是相当不可用的(它不会接受可空类型)
public class DynamicField
{
public String fieldName { get; set; }
private Type _type;
public DynamicField SetFieldType<T>() where T:struct
{
this._type = typeof(T);
return this;
}
public Type GetFieldType()
{
return this._type;
}
public DynamicField(String fieldName)
{
this.fieldName = fieldName;
}
}
你可以这样写:
var t = new DynamicTable();
t.Add(new DynamicField("ColumnA").SetFieldType<String>());
也许您可以在type
setter中检查value.IsValueType
是否为真,如果为假则抛出异常。
希望这对你有帮助,