Estoy jugando con algunas clases e interfaces, y he desarrollado un método simple para determinar la jerarquía de una clase, es decir, para identificar la cadena de herencia.Jerarquía de clases para interfaces 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);
}
Así, por
OutputClassHierarchy(typeof(System.Exception));
consigo la salida:
System.Exception: System.Object
System.Object: Base
Cual es lo que espero
Pero, Si intento lo mismo con una interfaz que implementa otra interfaz, es decir
interface IMyInterface : IDisposable
{
void Hello();
}
...
OutputClassHierarchy(typeof(IMyInterface));
consigo la salida:
MyNameSpace.IMyInterface: Base
Así , ¿que esta pasando aqui? ¿Es posible inferir la jerarquía de la interfaz como se declaró anteriormente, o no existe tal cosa cuando se trata de interfaces?
Además, ¿dónde está System.Object
en todo esto? Pensé que todo estaba construido sobre eso.
Para su información, usted ha escrito mal consistentemente "jerarquía" en todas partes. Recuerde que la regla es "Yo antes que E, excepto cuando es al revés". –
Ahí tienes a Eric. Todo arreglado. Me siento obligado a señalar una mala ortografía también. Lo único que me molesta, yo más; es incorrecto, puntuación ...! –