gpt4 book ai didi

c# - 接口(interface) C# 的类层次结构

转载 作者:太空狗 更新时间:2023-10-29 22:55:55 24 4
gpt4 key购买 nike

我正在研究一些类和接口(interface),并开发了一种简单的方法来确定类的层次结构,即识别继承链。

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)的接口(interface)进行相同的操作,即

interface IMyInterface : IDisposable
{
void Hello();
}

...

OutputClassHierarchy(typeof(IMyInterface));

我得到输出:

MyNameSpace.IMyInterface : Base

那么,这里发生了什么?是否可以推断出上面声明的接口(interface)层次结构,或者当涉及到接口(interface)时就没有这样的东西?

另外,System.Object 在哪里?我以为一切都建立在它之上。

最佳答案

接口(interface)不是从对象派生的,所以当你输出它的基类时它不会出现。这是 Eric Lippert 对派生自 Object 的事物(以及可转换为 Object 类型的事物)的评论。

http://blogs.msdn.com/ericlippert/archive/2009/08/06/not-everything-derives-from-object.aspx

这个 SO 答案可能有助于回答有关包含其他接口(interface)的接口(interface)的问题:

How to get interface basetype via reflection?

接口(interface)包含其他接口(interface),它们不是从它们派生的,因此在查找它的基类型时不会显示。

关于c# - 接口(interface) C# 的类层次结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2342822/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com