Dědičnost? Funguje takto?   otázka

C#, Architektura, .NET

Zdravím, chtěl bych si vytvořit hlavní třídu s nějakou proměnou (int). Pokud vytvořím novou třídu, a podědím od té hlavní, a zavolím si ten int z hlavní třídy, bude vždy o 1 větší bez toho, abych do kódu nové třídy musel psát kód.

Mé popisování není nejlepší, tak radši malý příklad:

class FIRST
{
    public int NUMBER = 1;
}

class SECOND : FIRST
{
    // Vrátí hodnotu první třídy a přičtě 1
    // Vrátí tedy 2
    public int GetNUMBER()
    {
        return this.NUMBER;
    }
}

class TEST : SECOND
{
    // Vrátí hodnotu první třídy a přičtě 1
    // Vrátí tedy 3
    public int GetNUMBER()
    {
        return this.NUMBER;
    }
}

Jak by to šlo udělat? Díky

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Momentálně mě nenapadá, jak by to šlo udělat plně automaticky bez nutnosti psaní dalšího kódu, ale rozhodně to jde udělat přičtením +1 v konstruktoru odvozené třídy:

Class A
  Protected n = 1
  'n = 1
End Class

Class B
  Inherits A
  Sub New()
    n += 1
    'n = 2
  End Sub
End Class

Class C
  Inherits B
  Sub New()
    n += 1
    'n = 3
  End Sub
End Class

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Pokud by byla z nějakého důvodu potřeba to udělat plně automaticky, jde to pomocí reflexe. V konstruktoru prvního typu si zjistíte aktuální typ pomocí this.GetType() a pak bude procházet do bázových typů přes vlastnost BaseType až se dostanete na typ typeof(FIRST). A počet kroků je výsledek, který hledáte.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Děkuji za odpovědi :-)

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:  
Heslo:  

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback