【发布时间】:2011-07-09 04:38:25
【问题描述】:
我有一个项目,它在 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 语句分支的唯一区别是生成的变量集合的类型时,如何减少代码重复?
【问题讨论】: