CodeDom里的类及相关的用法
1.CodeCompileUnit类
这个类是用来为CodeDom程序容器提供容器,可以通过他的Namespaces集合的Add方法加入一个命名空间
如:
CodeCompileUnit unit = new CodeCompileUnit();CodeNamespace theNamespace = new CodeNamespace("MyNamespace");unit.Namespaces.Add(theNamespace);
2.CodeNamespace类
用来表明一个命名空间对象,这个命名空间里可以引入其他命名空间,也可以加入类
如:加入一个类到命名空间里
CodeTypeDeclaration ETClass = new CodeTypeDeclaration("ETMyClasses");theNamespace.Types.Add(ETClass);
引入一个命名空间
CodeNamespaceImport SystemImport = new CodeNamespaceImport("System");theNamespace.Imports.Add(SystemImport);3.CodeTypeDeclaration类
用来表示类、结构、接口或枚举的类型声明。
声明一个类如
CodeTypeDeclaration ETClass = new CodeTypeDeclaration("ETMyClasses");BaseTypes 基类或接口的集合,通过Add方法添加TypeAttributes 类或接口的修饰符,如public、sealed,直接赋值,可以通过|进行或运算Members 类成员的集合,通过Add方法可以添加字段、属性、方法等
IsEnum 设置或获取这个类型是否是枚举IsClass 设置或获取这个类型是否是类IsInterface 设置或获取这个类型是否是接口IsPartial 设置或获取这个类是完整声明还是部分声明IsStruct 设置或获取这个类型是否是结构Name 设置或获取这个类型的名称
CodeTypeDeclaration的构造函数的参数可以是这个类的名称,也可以没有参数,在实例化之后直接指定他的名称。给一个类型添加基类时可以直接使用类名称,如:ETClass.BaseTypes.Add("EntitisGateway");也可以添加CodeTypeReference的实例,如:ETClass.BaseTypes.Add(new CodeTypeReference(typeof(System.Console)));
4.CodeNamespaceImport类
用来表示映入的Namespace对象,构造函数参数为无参或命名空间名,通过CodeTypeDeclaration的Imports集合的Add方法添加命名空间的5.CodeMemberField类
用来表明类里面的字段对象,构造函数的参数为类型和名称如
CodeMemberField tableNameFiled = new CodeMemberField(typeof(string), "C_STR_TABLENAME");这是表明定义了一个类型为string,名字为C_STR_TABLENAME的类成员字段
Attributes 设置类的描述符号如Const、public,可以用|进行或运算InitExpression 初始化字段的表达式注意对InitExpression赋值需要使用CodePrimitiveExpression类,他是用来表示使用指定对象来初始化,如:
tableFieldField.InitExpression = new CodePrimitiveExpression(field.FieldName);
6.CodeMemberProperty类
用来表明类里面的属性对象构造函数为无参构造函数Name 属性的名称Type 属性的类型,使用CodeTypeReference来进行赋值Attributes 表明属性的修饰符public、override HasGet 获取或设置该属性是否有get方法访问器HasSet 获取或设置该属性是否有set方法访问器GetStatements 表明get方法访问器的语句集合,通过Add方法添加语句SetStatements 表明set方法访问器的语句集合,通过Add方法添加语句
给属性的get或set方法访问器添加语句如下例:
//定义一个表达式,他用来表示一个局部变量的引用CodeVariableReferenceExpression fieldExpression = new CodeVariableReferenceExpression("C_STR_TABLENAME");//定一个返回语句,用来表示get的返回语句,他返回的变量是fieldExpression CodeMethodReturnStatement propertyReturn = new CodeMethodReturnStatement(fieldExpression);//将返回语句添加到Get的语句集合中tableNameProperty.GetStatements.Add(propertyReturn);

