返回目录 看过类型是如何定义在CLR和ILAsm中的,让我们进入下一个问题:这些类型以及它们的派生是如何被分配到程序项——字段、变量等等。定义程序项类型的结果的结构被称为这些项的签名。签名创建于编码引用到各种各样的类和值类型;我将在本章详细讨论签名。 CLR中的基本类型 所有的类型必须要被定义于某处。Microsoft .NET Framework类库定义了上百个类型,而且其它程序集基于这... Read More
升级思路: 用WPF做Client端,Server端还用Wnform做。 用WCF做网络通信,不再使用TCP Scoket模型,从而实现UDP打洞技术。 用WF来分离业务逻辑。 用LINQ来操作DB。同时Server端不再用DataTable存储用户,代替以强类型集合,使用LINQ操纵数据。 用Ajax+MemberShip实现B/S用户注册。 用策略模式实现不同游戏的不同玩法,接口化编程。 ... Read More
返回目录 类的扩充 在ILAsm中,和在Visual Basic和C#中,一个类的所有的成员、特性和内嵌类都在这个类的词法范围内声明。然而,ILAsm允许你重新打开一个已经关闭的类范围并定义额外的项: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-... Read More
返回目录 值类型 值类型是CLR模型中最接近C++结构的。这些类型是一些带有平凡结构(例如,一个4字节整数)或复杂结构的值。当你声明一个类的类型的变量时,你不用自动创建一个类的实例。你只是创建了一个指向类的引用,初始化指向空。但是当你声明一个值类型的变量,这个值类型的实例立即被分配,通过变量声明本身,因为值类型是一个主要的数据结构。同样的,一个值类型必须有实例字段或大小的定义。一个0大小的值... Read More
返回目录 类的特性 在前面的章节(“类的元数据”)列出了包括在一个类型定义中的各种信息。在最简单的情况中,当只涉及到TypeDef元数据表的时候,对于一个类型定义的ILAsm语法如下所示: .class extends { ... } 在.class指令中指定的值定义了TypeDef的Namespace和Name项,在.extends子句中指定的定义了Extends项,而... Read More
返回目录 正如在前面章节所讨论的,CLR计算模型本质上是面向对象的。类的概念——或者,为了使用更加精确的运行时术语,类型的概念——围绕着整个被组织起来的计算模型的核心原则。一个项的类型——变量、常量、参数等等——定义了数据表示和这个项的行为特性。因此,一个类型可以被另一个代替只有当这两方面和这两种类型是相当的——例如,一个派生类可以被解释为它的父类的类型。 CLI的ECM... Read More
当编程到一定境界就会发现,人生就是一棵二叉树上从root到其中一个leaf的一条线段,只是有的长一些,有的短一些。 每个人,从生下来就一直在做0和1的选择,不停地做,直至生命终结。每一个细小的选择,都会影响后面的选择机会,比如说上学时你选择荒废,那么很多好的教育或者好的工作,都会直接对你说不,也就是0;同时,你的选择也会影响其他人的选择,比如说,你顺手从楼上扔下一张纸,把小明砸... Read More
返回目录 ExportedType元数据和声明 ExportedType元数据表包括了关于声明在程序集的非主要模块的公有类(在程序集外部可见)的信息。只有主模块的清单可以携带这个表。 之所以需要这个表是因为加载器希望一个程序集的主模块保存关于所有由程序集导出的类的信息。这些类——定义在主模块和ExportedType表中——的联合,给出了加载器一个完整的画面。 另... Read More
返回目录 File元数据表和声明 File元数据表描述了在当前模块宗引用到的同一个程序集的其它文件。在单模块程序集中,这个表是空的(除非你想要详细指明非托管DLL作为你的部属的一部分,正如在本章前面所描述的)。这个表有如下的列结构: Flags(4字节宽位域):描述文件特征的二进制标记。为了将来使用,这个入口总是保留的,当前定义的唯一标记是ContainNoMetaData(0... Read More
返回目录 AssemblyRef元数据表和声明 AssemblyRef(程序集引用)元数据表定义了一个程序集或模块的外部的依赖。主模块和非主要的模块可以——而且通常确实可以——包括这个表。唯一的一个不依赖于其它任何程序集的程序集,并因此而只有一个空的AssemblyRef表,是Mscorlib.dll,.NET Framework类库的根程序集。 AssemblyRef表的列结... Read More