.NET,你忘记了么(一)—— 遵从CLS

首先,让我们来简单地看下什么叫做CLS。

鉴于个人的英文水平,我还是先给出 CLS的英文解释,然后我再翻译:

The CLS is a specification that defines the rules to support language integration. This is done in such a way, that programs written in any language (.NET compliant) can interoperate with one another. This also can take full advantage of inheritance, polymorphism, exceptions, and other features.

CLS定义了支持语言继承的规范,他使我们所写的程序可以于任何一门.NET 所兼容的语言交互,这使我们也可以充分利用继承,多态,异常以及其他一些特点的优势。

其实简化了说,CLS就是定义了个门语言的子集,从而去保证语言的互操作性。

因此,为了语言之间的互操作,我们应该使我们的程序遵从CLS。

我们看一下 系统的层次,系统下应该是程序集,程序集下就是类(或结构体等)。那么我们为了保证语 言的互操作性,就应该保证程序集对外的部分都遵从CLS。

这点很容易保证:

当我们新建一个程序集的时候,有一个文件叫做:AssemblyInfo.cs:

[assembly: AssemblyTitle("ClassLibrary1")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("微软中国")]
[assembly: AssemblyProduct("ClassLibrary1")]
[assembly: AssemblyCopyright("Copyright  微软中国 2009")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

// 将 ComVisible 设置为 false 使此程序集中的类型
// 对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型,
// 则将该类型上的 ComVisible 属性设置为 true。
[assembly: ComVisible(false)]

// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
[assembly: Guid("694543e8-4c7f-4952-9e98-7282ecff1c15")]

// 程序集的版本信息由下面四个值组成:
//
//   主版本
//   次版本 
//   内部版本号
//   修订号
//
// 可以指定所有这些值,也可以使用“内部版本号”和“修订号” 的默认值,
// 方法是按如下所示使用“*”:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

时间: 2025-01-21 12:48:41

.NET,你忘记了么(一)—— 遵从CLS的相关文章

.NET,你忘记了么?(六)——再谈String

一. 文章伊始 在文章之前,说下写出这篇文章的目的.在我昨天的一篇文章<<重温设计模式(一 )--享元模式(Flyweight) >>中,我在文中提到了关于String的字符串驻留机制. 在文章的评论中,杨同学对我的字符串相关观点提出质疑,并且成文,不过我现在无法找到 那个链接了. 于是,我想把这个老掉牙的话题在此重谈. 究竟我们对String这个常用的类型有多少理解. 二. 从C看起 C语言是我接触的第一个程序语言.还记得当时给我的C语言老师是一个专业做Java SOA的 老师.

.NET目标(一)

此外,.NET大量地运用了XML技术,并赋予SOAP协议极其重要的地位.借助于SOAP,Microsoft希望将软件开发带入一个新的时代,即不再依赖于装配组件和对象,而是以重用服务作为软件开发的基础.SOAP和Web服务共同构成了.NET平台的基础. 然而,为当前正在开发的DNA应用的未来而担心仍旧是没有必要的.Microsoft已经承认,发布.NET最终版本的时间不会早于2002年,而且.NET能够直接在裸机上运行现有的应用,但这些应用将无法利用任何.NET的优势. 和Microsoft让我们

.NET的精华二(开拓者必看)

精华 导读 .NET代表着Microsoft野心勃勃的宏伟战略.作为开发者,不了解.NET就意味着落伍的危险.本文为你展示.NET体系结构的全景图.请务必记住,唯有全局在握,才能踌躇满志-- 作者:仙人掌工作室 本文点击次数:765 2001-03-20 把此文推荐给好友 此外,.NET大量地运用了XML技术,并赋予SOAP协议极其重要的地位.借助于SOAP,Microsoft希望将软件开发带入一个新的时代,即不再依赖于装配组件和对象,而是以重用服务作为软件开发的基础.SOAP和Web服务共同构

.NET的目标

概述 在去年7月美国奥兰多举行的专业开发者大会上,Microsoft展示了它最新.NET体系,众多的发言人向大会介绍了.NET的特征和构成. 什么是.NET呢?实质上,.NET是Microsoft贴在现有产品和未来产品上的一个新式行销标签.在Microsoft服务器端产品中,如基于Windows DNA 2000技术的BizTalk Server 2000和Application Center 2000,.NET标签将随处可见.然而,.NET最令人感兴趣的特色却在于它的开发平台.语言和协议. 通

带你走进ASP.NET(2)

asp.net 1.2.1 ASP.NET的编程语言    现在ASP.NET支持的开发语言包括VB.NET.C#.NET.JSCRIPT.NET.VC++.NET以及其它.NET Framework所支持的语言.这里我向大家介绍最常用的VB.NET和C#.NET.    1. Visual Basic.NET    Visual Basic.NET是Visual Basic在.NET中的最新版本.它和VB 6比较起来,增加了许多新的或者改进的特性――例如:继承.接口.重载(Overloadin

实例解析C++/CLI中的继承与枚举

本文中,将要介绍与继承相关的C++/CLI主题,并以现实生活中银行交易的三种形式:存款.取款.转账,来说明类的继承体系,且以一种新的枚举形式来实现. 枚举器 请看例1中声明的类型,它存在于其自身的源文件中,并编译为一个只包含此类型的程序集: 例1: public enum class TransactionType : unsigned char {Deposit, Withdrawal, Transfer}; 与想像的一样,枚举器中的Deposit.Withdrawal.Transfer分别代

实例解析C++/CLI的“克隆”

C++/CLI不但支持基于堆栈的对象,同时也支持基于堆的对象:然而,如果想与其他基于CLI的语言(如C#.J#.Visual Basic)进行互操作的话,必须要清楚地知道,这些语言只支持基于堆的对象:当处于基于堆的对象环境中时,你与对象之间,永远只有"一臂之遥",比方说,两个给定的句柄h1与h2,只有在为这种句柄类型定义了相应的赋值操作符时,*h1 = *h2才会工作正常,而对C++/CLI之外的其他语言中的类型来说,情况可能就不是这样了.同样地,一个遵从CLS的机制需要创建对象的一份

Effective C#原则30:选择与CLS兼容的程序集

.Net运行环境是语言无关的:开发者可以用不同的.Net语言编写组件.而且在实际开发中往往就是这样的.你创建的程序集必须是与公共语言系统(CLS)是兼容的,这样才能保证其它的开发人员可以用其它的语言来使用你的组件. CLS的兼容至少在公共命名上要与互用性靠近.CLS规范是一个所有语言都必须支持的最小操作子集.创建一个CLS兼容的程序集,就是说你创建的程序集的公共接口必须受CLS规范的限制.这样其它任何满足CLS规范的语言都可以使用这个组件.然而,这并不是说你的整个程序都要与CLS的C#语言子集相

Yuval Noah Harari 谈论大数据,谷歌和自由意志的终结 -- 忘记聆听自己。在数字时代,算法会找出答案。

千百年来,人类相信众神给予了权力.直至现代,人们渐渐地把权力从神明手中接受了下来.卢梭(Jean-Jacques Rousseau) 在他的1762年的教育著作,<爱弥儿>(Emile),中总结了这场变革.当在探寻生命中的规律时,卢梭发现这些规律"存在于我的内心深处,循着不被影响的自然的轨迹.我只需要扪心自问我想要什么.我觉得好的就是好的,我觉得坏的就是坏的."和卢梭一样的人文主义思想家说服我们,我们自己的感觉和渴望是所有事物的源泉,是我们的自由意志,是最高的权力. 现在,