在讨论.net语言时,必须区分.net consumer和.net extender工具。
当把程序集标记为兼容的,仍可以定义不兼容的方法,如果重写某些方法,使其参数是兼容的和不兼容的数据类型,就必须把类中的不兼容的方法的clscompliant属性设置为false。clscompliant属性可以应用到类型、方法、属性、字段和事件。
.net consumer工具只适用.net Framework中的类,不能创建可以用于其他语言的。net类。.net consumer工具可以使用任何与cls兼容的类。.net extender工具则可以满足consumer的要求,另外可以继承任何与cls兼容的.net类,定义了可以由consumer使用的新cls兼容类。
利用CLSCliant属性,可以把程序集标记为与cls兼容,这样可以确保这个程序集中的类能用于所有的.net consumer工具。
程序集与cls规则兼容的要求:
- 方法原型中的所有类型都必须与cls兼容
- 数组元素的元素类型必须与cls兼容
- cls兼容类必须继承与cls兼容类,
- 在cls兼容类中,方法名是不区分大小写的
- 枚举的类型必须是int16,或int32,int64
- 上述枚举的要求只适用于公共成员和受保护的成员。