[C#] Ekvivalent Delphi "reintroduce"

C++, C#, Visual Basic, Delphi, Perl a ostatní

Moderátor: Moderátoři Živě.cz

Odeslat příspěvekod BEZY 17. 1. 2011 16:07

Existuje v C# ekvivalent klíčového slova v Delphi reintroduce? Jedná se o to, že mám v rodičovské třídě nějakou metodu (třeba Init() ) a v dědící třídě chci mít stejnou metodu, ale např. s extra parametrem Init(param) ale už nechci, aby bylo z venku možné volat původní Init() ale pouze ten nový...
BEZY
Junior
Uživatelský avatar

Odeslat příspěvekod Falhar 17. 1. 2011 16:21

Vzhledem k tomu, že C# podporuje přetěžování metod, tak nevidím důvod, proč by takovýto modifikátor existoval.
Pokud něco takového vyžaduješ, tak máš nejspíš něco špatně s návrhem tvých tříd. Jedinnou možností, jak toto udělat je využít konstruktorů, které takovéto chování přímo vyžadují.
Falhar
Junior

Odeslat příspěvekod BEZY 17. 1. 2011 16:30

Přetěžování samozřejmě znám - to mi ale nezastíní metodu v rodičovské třídě

V Delphi jsem např. často používal reintroduce u Formů a metody Show(Modal) - potřebuji předat data formuláři při jeho zobrazení - tak si napíšu vlastní ShowModal(...) se svými parametry a použitím klíčového slova reintroduce se původní ShowModal() zastíní - protože nechci, aby se mi zobrazil prázdný formulář.

Že to tak je u konstruktorů vím, ale těm jsem se chtěl pro toto vyhnout..
BEZY
Junior
Uživatelský avatar

Odeslat příspěvekod Falhar 17. 1. 2011 16:33

Osobně bych v tomto případě šel cestou jiného názvu metody.
Nebo by šlo využít virtuálních metod a nepředávat jako parametr metody, ale jako property objektu.
Falhar
Junior

Odeslat příspěvekod Nargon 17. 1. 2011 18:10

Tohle zde neni, protoze jazyk s touto funkci uz neni Objektovy. A C# je striktne objektove. Tohle totiz porusuje pravidlo dedicnosti, kdy potomek ma mit vsechny metody rodice.
Ale jakmile tohle zavedes, tak uz u potomka nemusi byt pristupne metody rodice.
Desktop: Ryzen 7 1800X (3.95GHz, 1.35V), Asus Crosshair VI Hero, 16GB DDR4 Ram (3200MHz), 128GB SSD + 3TB HDD, Nvidia GTX 1080
Notebook: Asus UL50VT 15.6" (SU7300@1.7GHz, 4GB ram, 500GB HDD, Intel GMA 4500MHD + nVidia G210M, dlouha vydrz cca 7+ hod)
Nargon
Moderátor


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků