我有一個項目,它存儲SQL中的值,然後檢索它們進行分析。爲了跟蹤何種類型的值可能會被保存,我創建了一個類大致是這樣的:存儲變量類型並使用它在運行時創建集合
private class DataField
{
public string FieldName;
public string FieldType;
}
當被讀取分析值,一個switch語句中使用如下(簡化):
switch (DataField.FieldType)
{
case "int":
List<int> InputData = new List<int>();
// Populate list from DB
break;
case "bool":
List<bool> InputData = new List<bool>();
// Populate list from DB
break;
}
而不是維護代碼在多個地方,我正在尋找一種方法來擺脫switch語句,但這意味着我需要動態創建基於類型的集合。目前該類型是(天真?)的字符串,但我想我可以改變類改善這樣的:
private class ImprovedDataField
{
public string FieldName;
public Type FieldType;
}
,然後動態莫名其妙地創建集合:
Type DataType = typeof(DataField.FieldType);
List<DataType> InputData = new List<DataType>();
// Populate list from DB
這當然不工作,導致Type or namespace name expected
錯誤。
不幸的是,我不是很熟悉Type
類,也沒有泛型或匿名類型,因爲我搜索解決方案(似乎沒有什麼合適的)。
如何減少每個switch語句分支中唯一區別是正在生成的變量集合類型的代碼重複?
可能重複(http://stackoverflow.com/questions/2078914/c-sharp-dynamic-generic-type) – nawfal