C# 用于准备SQL表创建的值和类型处理的最佳方法

C# 用于准备SQL表创建的值和类型处理的最佳方法,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,我有一个类,它表示将在sql数据库中创建的动态表 public class DynamicTable { public List<DynamicField> fieldNames { get; set; } } 我担心的是,您可以传递任何您想要的类型,但我只需要一些特定的数据类型,如String、int、date、float 我如何改进我的代码,只有通过它们才有可能? 基于使用属性类型在我的sql数据库中正确创建表的想法,有没有比使用System.type类型更好的方法

我有一个类,它表示将在sql数据库中创建的动态表

public class DynamicTable
{
      public List<DynamicField> fieldNames { get; set; }
}
我担心的是,您可以传递任何您想要的类型,但我只需要一些特定的数据类型,如String、int、date、float

我如何改进我的代码,只有通过它们才有可能?
基于使用属性类型在我的sql数据库中正确创建表的想法,有没有比使用System.type类型更好的方法?

我想您可以使用Generic设置一个约束,如下所示。但我也猜它在您的动态场景中将非常不可用,并且它不接受可为null的类型

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>());
也许您可以在类型设置程序中检查value.IsValueType是否为true,如果为false,则抛出异常


希望这会有所帮助,

如果我要创建DynamicField类的实例,我将如何设置类型?@Zteve:更新了我的代码,以便提供一些流畅的示例。除此之外,动态场景将出现在switch/if语句中,这使我说它在您的场景中非常不可用,只是转移了问题。
   var t = new DynamicTable();
   t.Add(new DynamicField("ColumnA").SetFieldType<String>());