【问题标题】:In what .NET languages can a class derive from its own nested class?在哪些 .NET 语言中,类可以从其自己的嵌套类派生?
【发布时间】:2013-12-16 18:05:03
【问题描述】:

在 C# 中,尝试编译以下代码会产生错误“循环基类依赖关系涉及 'A' 和 'A.B'”

public class A : A.B
{
    public class B { }
}

但是,我正在通过反编译器查看第 3 方 DLL,并看到此结构。这怎么可能?我只能假设第三方 DLL 是用其他一些 .Net 语言编写的,但是什么语言和语法是什么?

【问题讨论】:

  • 哪个反编译器?你在使用 .NET 反射器吗?
  • 我希望没有 .NET 语言可以做到这一点。这是关于 SO 的类似问题,但不一定与您重复。 stackoverflow.com/q/265585/809009
  • CLI 中可能发生许多奇怪和邪恶的事情...
  • 看起来像混淆器的得心应手的工作。
  • 我猜是 c++ 或 CIL 本身。嵌套类只是范围问题,这样做没有真正的问题,它只是愚蠢......

标签: c# circular-dependency


【解决方案1】:

这是因为您尝试反编译的 dll 是“混淆的”。混淆器会更改所有类的名称,以使反编译器无法被反编译。

【讨论】:

    【解决方案2】:

    没有任何 DotNet 语言可以做到这一点。从自身间接派生子类是错误的,并且会产生循环依赖。 从编译器的角度思考,当它试图编译 A 类时,首先它需要编译 B 类,而 B 类又依赖于 A 类,以此类推。所以它在编译时会创建一个永久循环。

    【讨论】:

    • B不是从A派生的,是嵌套在里面的,跟继承关系没有任何关系。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-08
    • 1970-01-01
    • 1970-01-01
    • 2016-03-11
    • 2020-08-23
    • 2023-03-29
    • 2011-02-04
    相关资源
    最近更新 更多