Diskuze: Reflexe a Seznam
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 8 zpráv z 8.
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Zkus sem poslat ty třídy. Btw, proč nezískáš type skrz GetType na
třídě Object nebo skrz typeof(class)?
A co když vytvořím reflexí třídu která z té třídy dědí a má metodu navíc a potřebuju tu metodu volat?
Pak bys měl znát rozhraní, které definuje tuhle metodu a není v tom problém, protože v opačném případě porušuješ principy OOP.
Ale pokud ti na OOP nezáleží a opravdu ji chceš zavolat, tak přes reflection nebo dynamic.
object x = System.Activator.CreateInstance(Type.GetType("Namespace." + record.Type), args);
// dynamic
dynamic dx = x;
dx.NeznamaMetoda();
// reflection (priblizne, nemam tu windows)
var method = x.GetType().GetMethod("NeznamaMetoda");
method.Invoke(x, null);
Díky, ale já potřebuju uložit tu instanci bez převodu na jeho předka, ale aby zůstal jako potomek a uložil se do seznamu jako potomek.
Typ třidy je runtimová informace, nejde "převést". Přetypování určuje pouze způsob, jak se na instanci objektu díváš, neurčuje, čím instance je. V prvním příkladu ukládám instance, které dědí z MyBaseClass, ale to nemá vliv na jejich vlastní typ.
Zobrazeno 8 zpráv z 8.