原文:[CLR via C#]1.6 Framework类库~1.9与非托管代码的互操作性
1.6 Framework类库
1. .NET Framework中包含了Framework类库(Framework Class Library,FCL)。
2. FCL是一组DLL程序集的统称,其中含有数千个类型定义,每个类型公开一些功能。
1.7 通用类型系统
1. CLR是完全围绕类型展开的。
2. 类型为应用程序和其他类型公开了功能。通过类型,用一种编程语言写的代码能与另一种语言写的代码沟通。
3. 由于类型是CLR的根本,所有MicroSoft指制定了一个正式的规范,即"通用类型系统"(Common Type System,CTS),它描述了类型的定义和行为。
4. CTS规定,一个类型可以包含一个或者多个成员。比如:字段、方法、属性、事件等。
5. CTS还指定了类型可视性规则以及类型成员的访问规则。如privae、family(C#:protected)、family and assembly(C#:没有)、assembly(C#:internal)、family or assembly(C#:protected internal)、public
6. CTS规定所有类型最终必须从预定义的System.Object类型继承。
1.8 公共语言规范
1. MicroSoft定义了一个"公共语言规范"(Common Language Specification,CLS),它详细定义了一个最小的功能集。任何编译器生成的类型要想兼容于其他"符合CLS、面向CLS的语言"所生成的组件,就必须支持这个最小的功能集。
2. CLS定义了所有语言必须支持的一个最小的功能集。
1.9 与非托管代码的互操作性
1.CLR提供了一些机制,允许在应用程序中同时包含托管代码和非托管代码。具体说,CLR支持三种互操作情形。
1)托管代码能调用DLL中俄非托管函数。托管代码采取一种名为P/Invoke(Platform Invoke)的机制来调用DLL中的包含的函数。
2)托管代码可使用现有的COM组件(服务器)。
3)非托管代码可使用托管类型(服务器)。