Diskuze: Atributy a reflexe

C# .NET .NET (C# a Visual Basic) Atributy a reflexe American English version English version

Avatar
Michael Olšavský:

Ahoj všichni,
zkoumal jsem třídy .NET a docela mě zarazilo, proč se v běžných kódech nesetkávám s atributy (akorát v ASP.NET) a v knihovnách je toho naopak tolik. Je jen málo metod, které by se jim vyhnuly. K čemu jsou tedy tak důležité? Zdá se mi to pouze jako doplňková informace, která nemá moc velký význam narozdíl od xml dokumentace.

Zároveň se chci zeptat, zdali jste někdy používali reflexy a k čemu se to přesně hodí. Pokud jsem to pochopil, mohu se napojit na jakoukoliv knihovnu (či proces?) a zjistit si o něm všechno info nebo vytvořit novou instanci run-time?

 
Odpovědět 4.1.2014 21:32
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Michael Olšavský
David Čápka:

Reflexe ti umožňuje zkoumat zdrojový kód programu za jeho běhu a dokonce ho i měnit (rozšiřovat). Reflexí můžeš nahradit hnusné switche podobné tomuto:

switch (akce)
{
   case "krok": karel.Krok(); break;
   case "vlevovbok": k.VlevoVbok(); break;
   // dalších 1000 příkazů
}

Nad metody si dáš nějaký vlastní atribut, třeba volatelný. Při spuštění aplikace si projedeš třídu a přes reflexi najdeš metody s tímto atributem, které si uložíš. Dále je pak už jen voláš podle toho, co ti přišlo ve stringu. Ušetříš opravdu spoustu redundantního kódu.

Nahoru Odpovědět 5.1.2014 10:13
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

Na podobném principu je v Javě postaven enum. System.in, System.out a System.err jsou také enum.

Nahoru Odpovědět 5.1.2014 10:27
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.