Diyelim ki bir veri alanını temsil eden bir nesneye sahibim, bu nesnenin aşağıdaki özelliklere ihtiyacı var: Ad, Tür, Değer, Uzunluk. Ben sadece belirli türde bir değeri atamak edebilmek için kod kullanıcıyı zorlamak istiyorum, çünkü,Genel nesnelerin genel listesi
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; }
}
Ben generics kullandık: İşte nesnedir.
Şimdi sorun, bir alan listesi oluşturmak istediğimde.
List<Field<object>>
gibi bir liste oluşturursam, listedeki belirli bir Alana herhangi bir Değer atayabiliriz ve Tür için sorguladığımız zaman, 'object' alırız.
İşin aslı şu: bu listede dizeleri tutan birkaç alan isteyebilirim, az sayıda tutma yeri, tarih ve hatta özel nesneler de buna karşılık bir Alanlar listesi ...
Generics gibi bir şey için iyi bir çözümdür o? Eğer evet ise, bunu uygulamak için nasıl giderim? Değilse, daha iyi bir yol nedir?
--- DÜZENLEME ---
Biraz daha arka plan eklemek için:
1. Ben alanların listesini isteyebilir ve her alan öylesine gibi farklı veri türü tutacaktır:
List<Field<object>> lst = new List<Field<object>>();
lst.Add(new Field<string>());
lst.Add(new Field<int>());
lst.Add(new Field<SomeObjectFromMyApp>());
2. Daha sonra ben bu nesneleri sorgulamak zorunda kalacak ve otomatik olarak kendi nitelikleri bir döngü içinde, böyle bir şey:
foreach(Field<object> fld in lst)
{
Type t = fld.Type;
//do some other stuff
}
Tam olarak ne istiyorsunuz? Bu cümleyi anlamıyorum: "bu listede dizeleri tutan birkaç alan isteyebilirim, az sayıda tutma yeri, tarihler ve hatta özel nesneler sırayla Alanların bir listesi olacak" – Florian
Tam olarak ne söylediğini, birkaç tane alacağım Farklı alanlar listesi, ancak bu listedeki her Alan farklı veri türü (int, string veya bazı özel nesneler) tutuyor olabilir. –