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