Assembly(程序集)_Professional C# 3rd Edition

一:程序集由描述它的元数据,描述导出类型和方法的类型元数据,MSIL代码和资源组成。

二:程序集的一个重要部分是程序集清单:它是元数据的一部分,描述了程序集和引用它所需的所有信息,并列出所有的依赖关系。清单:

1:标识(名称,版本,文化,公钥)

2:引用程序集的列表

3:一组许可请求

4:导出的类型

三:ILDASM(命令行工具),是MSIL disassembler。在命令行输入ILDASM,可以显示程序集清单,命名空间及包含的类。

打开程序集清单就可以看见我前边所述的内容。

打开类的方法,就可以查看MSIL的代码

四:模块

 1:模块可以更快的启动程序集,因为并不是所有的类都在一个文件中,模块只有在需要时再加载。

 2:如果使用多语言编写程序集,就可以通过模块来实现,然后包括在同一个程序集中。

五:CLS要求

 1:.Net .custumer工具只使用.Net Framework中的类,它不能创建用于其他语言的.Net类。.Net consumer工具可以使用任何与CLS兼容的.Net类。

 2:.Net extender工具可以继承任何与CLS兼容的.Net类,并可以定义由客户使用的新CLS兼容类。

六:CLSCompliant属性

 利用CLSCompliant属性可以把程序集标记为CLS兼容,可以确保这个程序可以应用与所有的CLS consumer工具。

 但是在私有方法中使用数据不受限制,因为别的类根本访问不到它们。

使用方法:把程序集标记为兼容,仍可以定义不兼容的方法,但是要见CLSCompliant属性设置为false。

[CLSCompliant(false)]

void Method(uint i)

{

//...

}

注:CLSCompliant可以引用到类型,方法,属性,字段和事件

七:CLS规则

 1:方法原形中的所有类型都要与CLS兼容

 2:数组元素的元素类型必须与CLS兼容,下标必须为0

 3:CLS兼容类必须继承于CLS兼容类

 4:CLS中方法名不区分大小写

 5:枚举类型必须为Int16,Int32或者Int64的。

注:在方法名中使用数据类型名时,应使用一般的类型名:如:

 int ReadInt32()

 int ReadInt64()

 int ReadSingle()

八:共享程序集名

 1:程序集本身的名称

 2:版本号

 3:公钥保证强名称的唯一性

 4:文化

注:可以使用命名空间层次结构给类命名。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值