Before you start firing at me, I'm NOT looking to do this, but someone in another post said it was possible. How is it possible? I've never heard of inheriting from anything using reflection. But I've seen some strange things...
A sealed class, in C#, is a class that cannot be inherited by any class but can be instantiated.
The sealed keyword enables you to prevent the inheritance of a class or certain class members that were previously marked virtual.
enum classes can't extend a sealed class (as well as any other class), but they can implement sealed interfaces.
Without virtual functions to override, there's not much point in subclassing a sealed class.
If you try write a sealed class with a virtual function in it, you get the following compiler error:
// error CS0549: 'Seal.GetName()' is a new virtual member in sealed class 'Seal'
However, you can get virtual functions into sealed classes by declaring them in a base class (like this),
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) {} }
The problem still remains though, I can't see how you could sneak past the compiler to let you declare a subclass. I tried using IronRuby (ruby is the hackiest of all the hackety languages) but even it wouldn't let me.
The 'sealed' part is embedded into the MSIL, so I'd guess that the CLR itself actually enforces this. You'd have to load the code, dissassemble it, remove the 'sealed' bit, then reassemble it, and load the new version.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With