Witam
Obecnie poznaję język C#, jestem po etapie klas generycznych. W związku z tym mam do was pytanie.
Czy można utworzyć listę generyczną List<T> gdzie jako typ T podaję obiekt zawierający już w sobie wewnętrzne klasy genetyczne. Na przykład taka struktura.
//klasa opisująca
class material
{
public double cena;
struct material_data //pary zawierające cechę opisującą przedmiot oraz wartość cechy
{
string cecha;
double warosc;
public material_data(string x, double y)
{
cecha = x;
warosc = y;
}
}
List<material_data> opis = new List<material_data>(); //lista zawierająca wszystkie cechy
public void dodaj_cecha (string x, double y) //metoda dodająca poszczególne cechy do listy
{
material_data poz_opisu = new material_data(x, y);
opis.Add(poz_opisu);
}
}
Main
public static void Main(string[] args)
{
//kod programu
List<material> towar = new List<material>();
material oprzyz = new material();
oprzyz.dodaj_cecha("Ciężar", 15);
oprzyz.dodaj_cecha("Segment", 3);
oprzyz.dodaj_cecha("Kategoria izolacji napięciowej", 1000);
towar.Add(oprzyz);
}
Czy tym sposobem mogę dodawać do listy towar poszczególne pozycje zawierające wewnętrzne listy ? Wewnętrzne listy nie koniecznie muszą mieć tyle samo elementów. Tu w tym przykładzie dodałem jedną pozycję z trzema cechami, ale w dalszym przykładzie opisywany przedmiot będzie miał np 5 cech.
material oprzyz1 = new material();
oprzyz1.dodaj_cecha("Ciężar", 15);
oprzyz1.dodaj_cecha("Segment", 3);
oprzyz1.dodaj_cecha("Atest, 4);
oprzyz1.dodaj_cecha("liczba elementów", 2);
oprzyz1.dodaj_cecha("Kategoria izolacji napięciowej", 1000);
towar.Add(oprzyz1);
Wobec tego pierwsza pozycja "towar" będzie miała tylko trzy cechy, natomiast kolejna pozycja będzie miała 5 cech.
Czy mogę również u klasie "material" umieścić więcej list generycznych ?