Popis:
Existují dvě třídy, A a B, I A dědí třídu B a B je pak mateřská třída
Vlastnosti TestAttribute jsem nastavil ve třídě A a B...
Poté vezmeme charakteristiky objektu a kód je následující:
Zjistil jsem, že počet výsledků je 1 a atribut je atribut množina A, nikoli atribut množina B, natož sloučený, proč tomu tak je???
[Help("BaseClass")] publicclass Base{} publicclass Derive : Base{} Existují zde čtyři možné kombinace:
[AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = false ] [AttributeUsage(AttributeTargets.Class, AllowMultiple = true, Inherited = false ] [AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = true] [AttributeUsage(AttributeTargets.Class, AllowMultiple = true, Inherited = true] První případ:
Pokud se dotazujeme na třídu Derive (později uvidíme, jak dotazovat vlastnosti třídy za běhu), zjistíme, že funkce Nápověda neexistuje, protože zděděná vlastnost je nastavena na false.
Druhý případ:
Stejně jako v prvním případě, protože děděné je také nastaveno na nepravdivé.
Třetí situace:
Pro vysvětlení třetího a čtvrtého případu nejprve přidejme do odvozené třídy nějaký kód:
[Help("BaseClass")] publicclass Base{}[Help("DeriveClass")] publicclass Derive : Base{} Nyní se podíváme na funkci Nápověda, můžeme získat pouze vlastnosti odvozené třídy, protože děděné je nastaveno na true, ale AllowMultiple je nastaveno na false. Proto je funkce Nápověda základní třídy přepsána funkcí nápovědy odvozené třídy.
Čtvrtá situace:
Zde zjistíme, že odvozená třída má jak funkci Nápověda, tak vlastní Nápovědu, protože Povoleno je nastaveno na true.
|