前文中,老周已经厚着脸皮介绍了类型的声明,类型里面包含的自然就是类型成员了,故,顺着这个思路,今天咱们就了解一下如何向类型添加成员. 咱们都知道,常见的类型成员,比如字段.属性.方法.事件.表示代码成员的类型与 CodeTypeDeclaration 类有着共同的基类—— CodeTypeMember.毕竟类型也好,类型成员也好,都有共同特征. 下面,简单认识一下相关的几个类型,心里也有个谱. CodeMemberField:字段 CodeMemberProperty:属性 CodeMember…
上一篇文章中说了命名空间,你猜猜接下来该说啥.是了,命名空间下面就是类型,知道了如何生成命名空间的定义代码,之后就该学会如何声明类型了. CLR的类型通常有这么几种:类.接口.结构.枚举.委托.是这么几个,应该没有漏掉的吧. 定义类型,除了委托外都可以用 CodeTypeDeclaration 类完成.CodeNamespace类公开一个Types集合,定义的类型必须添加到这个集合中,才能与命名空间关联. 举个例子,下面代码将定义一个叫 Mouse 的类. // 编译单元 CodeCompile…
在开始正题之前,先补充一点前面的内容. 在方法中,如果要引用方法参数,前面的示例中,老周使用的是 CodeVariableReferenceExpression 类,它用于引用变量,也适用于引用方法参数.除了这个类,还可以使用 CodeArgumentReferenceExpression 类,这个类是专为方法参数引用而设计,其实用起来也和变量引用一样.请看看下面的例子. CodeMemberMethod m = new CodeMemberMethod(); m.Name = "Test&qu…
CodeDom 是啥东东?Html Dom听过吧,XML Dom听过吧.DOM一般可翻译为 文档对象模型,那 Code + DOM呢,自然是指代码文档模型了.如果你从来没接触过 CodeDom,你大概可以根据这个名字,推断它应该和代码文档模型有关. 这推断是靠谱的,CodeDom的功能,老周厚着脸皮把它归结为两大部分: 1.生成代码文档.这个听起来很玄?不玄,就是咱们在VS里常常耍的代码生成,比如你添加了一个服务引用,VS会帮你生成一个客户端代理类. 2.动态编译程序集.这个也好懂,就是动态编译…
      计算描述:计算规则指的是和其它“参与者类型成员”的之间的计算,必须求解处理人不为空的情况下才进行规则计算,各个“参与者类型成员”按序号顺序执行. 计算算法:并集(权重最低),交集(权重中),互拆(权重最高,且是独占式) 规则要点: 按序号顺序执行计算结果 参与者处理人不为空才参与成员间计算 权重 示例讲解 以上图图示为例,总共有三个参与者类型成员:SQL参与者,指定用户参与者,角色参与者. 那么我们用示例来解释一下规则里面的描述要点: 1.  按序号顺序执行计算结果 参与者前面都有一…
http://www.cnblogs.com/yangcaogui/archive/2012/04/20/2459567.html 接着 → .NET设计规范一:设计规范基础 上一篇,我们来了解下类型成员命名的设计! 3.类型成员命名的设计 3.1字段 ①遵循“ camelCasing  ”的命名规则 ②要用名词或名词词组,不要使用C#关键字 ③不要给字段添加任何前缀 ④定义常量的时候要使用“PascalCasing ”的命名规范 ⑤当定义私有变量的时候使用“camelCasing”命名,并且在…
C++ static.const和static const 以及它们的初始化 const定义的常量在超出其作用域之后其空间会被释放,而static定义的静态常量在函数执行后不会释放其存储空间. static表示的是静态的.类的静态成员函数.静态成员变量是和类相关的,而不是和类的具体对象相关的.即使没有具体对象,也能调用类的静态成员函数和成员变量.一般类的静态函数几乎就是一个全局函数,只不过它的作用域限于包含它的文件中. 在C++中,static静态成员变量不能在类的内部初始化.在类的内部只是声明…
本文老周就给大伙伴们介绍一下方法参数代码的生成. 在开始之前,先补充一下上一篇烂文的内容.在上一篇文章中,老周检讨了 MemberAttributes 枚举的用法,老周此前误以为该枚举不能进行按位操作,后来发现是可以的.不过啊,MemberAttributes 枚举有些情况下不那么好弄,最典型的就是要生成抽象类的时候,反正老周试了很久,用MemberAttributes枚举不能顺利生成抽象类. 这时候,老周想到了 TypeAttributes,然后就试了一下. CodeTypeDeclarati…
在上一篇文章中,老周介绍了表达式和语句,尽管老周没有把所有的内容都讲一遍,但相信大伙至少已经掌握基本用法.在本文中,咱们继续探讨 CodeDom 方面的奥秘,这一次咱们聊聊命名空间. 在开始之前,老周先厚着脸皮回答一位朋友的问题,有朋友问,我有一个代码文件,或者我直接把代码弄成文本,而不是生成的文档,那这些代码文本能编译吗? 当然可以了,后面老周会介绍的,如果你有兴趣,也可以自己研究研究,不难,其实蛮简单的. 在讲解过程中,可能老周会讲到重复的知识点,希望大家理解,因为很多知识不是孤立的,都会有…
知道了如果构建代码文档,知道了如何生成代码,那么编译程序集就很简单了. CodeDomProvider 类提供了三个可以执行编译的方法: 1.CompileAssemblyFromSource——这个好懂,也好办,就是用字符串直接构建代码,然后传给这个方法,就可以把源代码编译了. 2.CompileAssemblyFromFile——这个是把一个代码文件传给方法进行编译,文件中包含源代码. 3.CompileAssemblyFromDom——这个重载版本跟我们之前所学的内容关联性最大,因为它是把…