Я поиграюсь с некоторыми классами и интерфейсами и разработал простой метод определения иерархии классов, то есть определения цепочки наследования.
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);
}
Итак, для
OutputClassHierarchy(typeof(System.Exception));
Я получаю вывод:
System.Exception: System.Object
System.Object: Base
Что я и ожидаю.
Но, если я попытаюсь сделать то же самое с интерфейсом, который реализует другой интерфейс, т.е.
interface IMyInterface : IDisposable
{
void Hello();
}
...
OutputClassHierarchy(typeof(IMyInterface));
Я получаю вывод:
MyNameSpace.IMyInterface: Base
Итак, что здесь происходит? Можно ли вывести иерархию интерфейсов, как заявлено выше, или нет такой вещи, когда дело касается интерфейсов?
Кроме того, где System.Object
во всем этом? Я думал, что все было построено на этом.