【发布时间】:2011-01-21 12:26:40
【问题描述】:
我正在玩一些类和接口,并开发了一种简单的方法来确定类的层次结构,即识别继承链。
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 : 基础
这是我所期望的。
但是,如果我尝试对实现另一个接口的接口进行相同操作,即
interface IMyInterface : IDisposable
{
void Hello();
}
...
OutputClassHierarchy(typeof(IMyInterface));
我得到了输出:
MyNameSpace.IMyInterface : 基础
那么,这里发生了什么?是否可以推断出上面声明的接口层次结构,或者在接口方面没有这样的事情?
另外,System.Object 在所有这些中在哪里?我以为一切都建立在它之上。
【问题讨论】:
-
仅供参考,您一直在拼写错误的“层次结构”。记住规则是“我在 E 之前,除非是相反的情况”。
-
埃里克。都修好了。我也觉得有必要指出错误的拼写。唯一让我烦恼的,是我;不正确,标点符号...!
标签: c# inheritance class interface