gpt4 book ai didi

.net - 如何使用.Net中的反射从密封类继承?

转载 作者:行者123 更新时间:2023-12-03 13:28:15 25 4
gpt4 key购买 nike

在您对我开除之前,我不打算这样做,但是another post中的某人说这是可能的。这怎么可能?我从未听说过使用反射从任何东西继承。但是我看到了一些奇怪的事情...

最佳答案

如果没有要重写的虚函数,则对密封类进行子类化就没有多大意义。

如果尝试编写其中包含虚拟函数的密封类,则会出现以下编译器错误:

// error CS0549: 'Seal.GetName()' is a new virtual member in sealed class 'Seal'

但是,您可以通过在基类中声明虚函数来将它们放入密封类中,如下所示:
public abstract class Animal
{
private readonly string m_name;

public virtual string GetName() { return m_name; }

public Animal( string name )
{ m_name = name; }
}

public sealed class Seal : Animal
{
public Seal( string name ) : base(name) {}
}

但是问题仍然存在,我看不到如何偷偷通过编译器来声明子类。我尝试使用IronRuby( ruby 是所有杂乱无章的语言中最烂的一种),但即使这样也不允许我这样做。

“密封”部分嵌入到MSIL中,因此我猜想CLR本身实际上是在强制执行此操作。您必须加载代码,将其反汇编,删除“密封”位,然后重新组装,并加载新版本。

关于.net - 如何使用.Net中的反射从密封类继承?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/155087/

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