Niekedy musíme zistiť, či trieda implementuje rozhranie, napríklad pri použití reflexného mechanizmu na nájdenie konkrétneho typu.
Jednoducho povedané, môžete použiť metódu Type.IsAssignableFrom:
IsAssignableFrom označuje, či je možné typ BarClass priradiť rozhraniu IFoo, takže podmienkou na vrátenie true je, že BarClass priamo alebo nepriamo implementuje rozhranie IFoo. Existuje tiež metóda v type type, IsSubclassOf, ktorá jeIbaPoužíva sa na posudzovanie dedičných vzťahov tried, ako napríklad
Naznačuje, že FooClass je zdedený z BarClass.
Samozrejme, IsAssignableFrom sa dá použiť aj na určenie dedičnosti.
Takže pre nasledujúci kód:
rozhranie I { /* ... */ } trieda A : Ja { /* ... */ } trieda B : A { /* ... */ } Návratové hodnoty pre IsSubclassOf a IsAssignableFrom sú:
typeof(A).isAssignableFrom(typeof(I)); nepravdivé typeof(A).isSubClassOf(typeof(I)); nepravdivé
typeof(I).isAssignableFrom(typeof(A)); pravda typeof(I).isAssignableFrom(typeof(B)); pravda typeof(B).isSubClassOf(typeof(I)); nepravdivé
typeof(A).isAssignableFrom(typeof(A)); pravda typeof(A).isSubClassof(typeof(A)); nepravdivé
typeof(A).isAssignableFrom(typeof(B)); pravda typeof(A).isSubClassof(typeof(B)); nepravdivé
typeof(B).isAssignableFrom(typeof(A)); nepravdivé typeof(B).isSubClassof(typeof(A)); pravda
|