1

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.Typeタイプを使用するよりも良い方法はありますか?

4

1 に答える 1

0

以下のように、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>());

たぶん、trueのtypeセッターをチェックインし、 value.IsValueTypefalseの場合は例外をスローすることができます。

これがお役に立てば幸いです、

于 2013-03-06T09:53:41.057 に答える