Używam niektórych klas i interfejsów i opracowałem prostą metodę określania hierarchii klasy, tj. Identyfikowania łańcucha dziedziczenia.Hierarchia klas dla interfejsów C#
public static void OutputClassHierarchy(Type ty)
{
if (ty.BaseType == null)
{
Console.WriteLine("{0}: Base", ty);
Console.WriteLine("");
return;
}
Console.WriteLine("{0} : {1}", ty, ty.BaseType);
OutputClasshierarchy(ty.BaseType);
}
Więc dla
OutputClassHierarchy(typeof(System.Exception));
mam wyjścia:
System.Exception: System.Object
System.Object: Podstawa
Który jest to, czego się spodziewam.
Ale jeśli próbuję samo z interfejsem, który implementuje inny interfejs, tj
interface IMyInterface : IDisposable
{
void Hello();
}
...
OutputClassHierarchy(typeof(IMyInterface));
mam wyjścia:
MyNameSpace.IMyInterface: Podstawa
Tak , co tu się dzieje? Czy możliwe jest określenie hierarchii interfejsu, jak zadeklarowano powyżej, czy też nie ma czegoś takiego, jeśli chodzi o interfejsy?
Ponadto, gdzie jest System.Object
w tym wszystkim? Myślałem, że wszystko zostało na nim zbudowane.
Wystarczy FYI, masz konsekwentnie błędnie "hierarchia" w całym. Pamiętaj, że zasada brzmi "Ja przed E, chyba że jest inaczej". –
Tam dostajesz Erica. Wszystko naprawione. Czuję się też zobowiązany do wskazania złej pisowni. Jedyne, co denerwuje, to mnie bardziej; jest niepoprawny, interpunkcja ...! –