2013-03-06 36 views
1

我有一個代表要在sql數據庫中創建的動態表的類。用於準備SQL表格創建的值和類型處理的最佳方式

public class DynamicTable 
{ 
     public List<DynamicField> fieldNames { get; set; } 
} 

的DynamicField代表一對字段名稱和它的數據類型:

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; 
     } 

} 

我的擔心是對,你可以通過任何你想要的類型,但我只需要像字符串一些特定的數據類型,int,日期,浮點數。

我該如何改進我的代碼,只能通過它們? 基於使用屬性類型在我的sql數據庫中正確創建表的想法,是否有比使用System.Type類型更好的方法?

回答

0

我想你可以把通用的約束,如下所示。但我也想這將是在動態的場景相當不可用(它不會接受空類型)

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; 
    } 
} 

然後,您可以編寫類似:

也許你可以查一下type設置程序value.IsValueType爲true,如果爲false則拋出異常。

希望這會有所幫助,

+0

如果我想創建一個DynamicField類的實例,我將如何設置類型? – Zteve 2013-03-06 10:22:05

+0

@Zteve:更新我的代碼,比我能提供某種「流利」的例子。除此之外,動態場景將在switch/if語句中,這使得我說它在您的場景中非常不可用(並且只是移動問題)。 – jbl 2013-03-06 13:44:01