データのフィールドを表すオブジェクトがあり、オブジェクトには名前、タイプ、値、長さのプロパティが必要です。ここにオブジェクトがあります:汎用オブジェクトの一般的なリスト
class Field<T>
{
public string Name { get; set; }
public Type Type
{
get
{
return typeof(T);
}
}
public int Length { get; set; }
public T Value { get; set; }
}
コードのユーザーに特定のタイプの値のみを割り当てることができるようにするために、ジェネリックを使用しました。
問題は、フィールドのリストを作成するときです。
List<Field<object>>
のようなリストを作成した場合、リストの任意のフィールドに任意の値を割り当てることができます。タイプをクエリすると、「オブジェクト」が取得されます。
このリストには、文字列を保持するフィールドはほとんどなく、int、日付、さらにはカスタムオブジェクトのフィールドも必要です。
ジェネリックスは次のようなそれ?はいの場合、それを実装するにはどうすればいいですか?そうでない場合、より良い方法は何ですか?
--- EDIT ---
ただ、いくつかのより多くの背景を追加するには:
1.私はフィールドのリストをお勧めしますし、各フィールドがそうのように、異なるデータ型を保持します:
List<Field<object>> lst = new List<Field<object>>();
lst.Add(new Field<string>());
lst.Add(new Field<int>());
lst.Add(new Field<SomeObjectFromMyApp>());
を
2.後で私は、これらのオブジェクトを照会する必要があります、とautomaticalyその属性のループでは、そのようなこと:
foreach(Field<object> fld in lst)
{
Type t = fld.Type;
//do some other stuff
}
正確に何をしたいですか?私はこの文を理解していません: "そのリストでは、文字列を保持するフィールドがほんの少しで、int、日付、およびカスタムオブジェクトの保持はほんとうにフィールドのリストが必要な場合があります。 – Florian
正確には、リストの各フィールドは異なるデータ型(int、stringまたはカスタムオブジェクト)を保持している可能性があります。 –