在过去,如果用一种语言子类编写组件,然后再用另一种语言子类来扩展该组件,这是非常困难的,或者说事实上是几乎不可能的。用C++编写一个类,再用VB来继承它以创建一个新的对象,像这样的事是绝对不可能发生的。如果没有父对象的或者至少头文件的源代码,我们同样也没办法使用一个已编译成二进制的组件(即使这组件是用同一种语言编写的)并从中派生出一个新的对象。
不过,由于有了CLR,我们就可以解决上述问题。与.NET类相关的元数据提供了足够多的信息(甚至是以已编译的形式),使我们可以从现有的类中派生出新类。CLR可以让我们做的另一件事情是一种不同的语言派生一个新类。过去要派生一个新类得拥有基类的源代码才行,而且编写新类所用的语言必须与基类所使用的语言相同。但是现在所有的CLR语言都编译成中间语言,所以用户可以使用任何一种CLR语言派生新类。