C#-ban átlehet adni változót generikus érték ként?
Van egy tömböm: List<Type> lista = new List<Type>() { typeof(Button) ... };
Illetve van egy függvényem: public void Fv<T>(){....}.
Sajnos nem engedi átadni, mint értéket: fv<lista[0].GetType()>();
Valahogyan megvalósítható ez a probléma?
Köszönöm. Megpróbáltam, de sajnos továbbra sem sikerül.
Ha változóba írva hívom meg (tipus néven): 'tipus' is a variable but is used like a type
Amennyiben az előbb írt módszerrel: Operator '<' cannot be applied to operands of type 'method group' and 'Type'
De amúgy sincs semmi értelme az egésznek.
A generikus programozás lényege pont az, hogy teljesen mindegy a típus, a program szempontjából lényegtelen.
Szerintem te itt nagyon félreérted ennek a működését. A generikus típusparaméterek azok generikus típusparaméterek, a typeof operátor, az Object.GetType() metódushívás pedig kifejezések. Ott, ahol generikus típusparamétert vársz, oda egy fordítási időben ismert típusnevet kell írnod, és nem írhatsz kifejezést. Azért sem fog működni, mert a típusnév fordítási időben ismert, míg a kifejezés csak futási időben válik ismertté.
Egy módon természetesen meghackelheted a rendszert, mégpedig reflection segítségével. Bonyolult, lassú és nehezen olvasható az eredmény, de legalább működik. Ettől függetlenül nagyon erősen ellene vagyok, és azt mondom, hogy rossz gyakorlat, amit csinálni akarsz.
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!