如题所述
ç»å¸¸è¢«æåé®å°å¦ä½å¨æçæ代ç ãè¿ä¸ªåè½æ¯ç±.NET Frameworkå
ç½®æ¯æçãä¸é¢è¿ä¸ªæ¹æ³å°±æ¯ä¸ä¸ªç®åçä¾å
private void GenerateCode() {
/*注æï¼å å¯¼å ¥ä¸é¢çå½å空é´
using System.CodeDom
using System.CodeDom.Compiler;
using Microsoft.CSharp;
using System.Reflection;
*/
//åå¤ä¸ä¸ªä»£ç ç¼è¯å¨åå
CodeCompileUnit unit = new CodeCompileUnit();
//åå¤å¿ è¦çå½å空é´ï¼è¿ä¸ªæ¯æè¦çæçç±»ç空é´ï¼
CodeNamespace sampleNamespace=new CodeNamespace("Xizhang.com");
//å¯¼å ¥å¿ è¦çå½å空é´
sampleNamespace.Imports.Add(new CodeNamespaceImport("System"));
//åå¤è¦çæçç±»çå®ä¹
CodeTypeDeclaration Customerclass = new CodeTypeDeclaration("Customer");
//æå®è¿æ¯ä¸ä¸ªClass
Customerclass.IsClass = true;
Customerclass.TypeAttributes = TypeAttributes.Public | TypeAttributes.Sealed;
//æè¿ä¸ªç±»æ¾å¨è¿ä¸ªå½å空é´ä¸
sampleNamespace.Types.Add(Customerclass);
//æ该å½å空é´å å ¥å°ç¼è¯å¨åå çå½å空é´éåä¸
unit.Namespaces.Add(sampleNamespace);
//è¿æ¯è¾åºæ件
string outputFile = "Customer.cs";
//æ·»å å段
CodeMemberField field = new CodeMemberField(typeof(System.String), "_Id");
field.Attributes = MemberAttributes.Private;
Customerclass.Members.Add(field);
//æ·»å å±æ§
CodeMemberProperty property = new CodeMemberProperty();
property.Attributes = MemberAttributes.Public | MemberAttributes.Final;
property.Name = "Id";
property.HasGet = true;
property.HasSet = true;
property.Type = new CodeTypeReference(typeof(System.String));
property.Comments.Add(new CodeCommentStatement("è¿æ¯Idå±æ§"));
property.GetStatements.Add(new CodeMethodReturnStatement(new CodeFieldReferenceExpression(new CodeThisReferenceExpression(), "_Id")));
property.SetStatements.Add(new CodeAssignStatement(new CodeFieldReferenceExpression(new CodeThisReferenceExpression(), "_Id"), new CodePropertySetValueReferenceExpression()));
Customerclass.Members.Add(property);
//æ·»å æ¹æ³ï¼ä½¿ç¨CodeMemberMethod)--æ¤å¤ç¥
//æ·»å æé å¨(使ç¨CodeConstructor) --æ¤å¤ç¥
//æ·»å ç¨åºå ¥å£ç¹ï¼ä½¿ç¨CodeEntryPointMethodï¼ --æ¤å¤ç¥
//æ·»å äºä»¶ï¼ä½¿ç¨CodeMemberEvent) --æ¤å¤ç¥
//æ·»å ç¹å¾(ä½¿ç¨ CodeAttributeDeclaration)
Customerclass.CustomAttributes.Add(new CodeAttributeDeclaration(new CodeTypeReference(typeof(SerializableAttribute))));
//çæ代ç
CodeDomProvider provider = CodeDomProvider.CreateProvider("CSharp");
CodeGeneratorOptions options = new CodeGeneratorOptions();
options.BracingStyle = "C";
options.BlankLinesBetweenMembers = true;
using (System.IO.StreamWriter sw = new System.IO.StreamWriter(outputFile)) {
provider.GenerateCodeFromCompileUnit(unit, sw, options);
}
}
private void GenerateCode() {
/*注æï¼å å¯¼å ¥ä¸é¢çå½å空é´
using System.CodeDom
using System.CodeDom.Compiler;
using Microsoft.CSharp;
using System.Reflection;
*/
//åå¤ä¸ä¸ªä»£ç ç¼è¯å¨åå
CodeCompileUnit unit = new CodeCompileUnit();
//åå¤å¿ è¦çå½å空é´ï¼è¿ä¸ªæ¯æè¦çæçç±»ç空é´ï¼
CodeNamespace sampleNamespace=new CodeNamespace("Xizhang.com");
//å¯¼å ¥å¿ è¦çå½å空é´
sampleNamespace.Imports.Add(new CodeNamespaceImport("System"));
//åå¤è¦çæçç±»çå®ä¹
CodeTypeDeclaration Customerclass = new CodeTypeDeclaration("Customer");
//æå®è¿æ¯ä¸ä¸ªClass
Customerclass.IsClass = true;
Customerclass.TypeAttributes = TypeAttributes.Public | TypeAttributes.Sealed;
//æè¿ä¸ªç±»æ¾å¨è¿ä¸ªå½å空é´ä¸
sampleNamespace.Types.Add(Customerclass);
//æ该å½å空é´å å ¥å°ç¼è¯å¨åå çå½å空é´éåä¸
unit.Namespaces.Add(sampleNamespace);
//è¿æ¯è¾åºæ件
string outputFile = "Customer.cs";
//æ·»å å段
CodeMemberField field = new CodeMemberField(typeof(System.String), "_Id");
field.Attributes = MemberAttributes.Private;
Customerclass.Members.Add(field);
//æ·»å å±æ§
CodeMemberProperty property = new CodeMemberProperty();
property.Attributes = MemberAttributes.Public | MemberAttributes.Final;
property.Name = "Id";
property.HasGet = true;
property.HasSet = true;
property.Type = new CodeTypeReference(typeof(System.String));
property.Comments.Add(new CodeCommentStatement("è¿æ¯Idå±æ§"));
property.GetStatements.Add(new CodeMethodReturnStatement(new CodeFieldReferenceExpression(new CodeThisReferenceExpression(), "_Id")));
property.SetStatements.Add(new CodeAssignStatement(new CodeFieldReferenceExpression(new CodeThisReferenceExpression(), "_Id"), new CodePropertySetValueReferenceExpression()));
Customerclass.Members.Add(property);
//æ·»å æ¹æ³ï¼ä½¿ç¨CodeMemberMethod)--æ¤å¤ç¥
//æ·»å æé å¨(使ç¨CodeConstructor) --æ¤å¤ç¥
//æ·»å ç¨åºå ¥å£ç¹ï¼ä½¿ç¨CodeEntryPointMethodï¼ --æ¤å¤ç¥
//æ·»å äºä»¶ï¼ä½¿ç¨CodeMemberEvent) --æ¤å¤ç¥
//æ·»å ç¹å¾(ä½¿ç¨ CodeAttributeDeclaration)
Customerclass.CustomAttributes.Add(new CodeAttributeDeclaration(new CodeTypeReference(typeof(SerializableAttribute))));
//çæ代ç
CodeDomProvider provider = CodeDomProvider.CreateProvider("CSharp");
CodeGeneratorOptions options = new CodeGeneratorOptions();
options.BracingStyle = "C";
options.BlankLinesBetweenMembers = true;
using (System.IO.StreamWriter sw = new System.IO.StreamWriter(outputFile)) {
provider.GenerateCodeFromCompileUnit(unit, sw, options);
}
}
温馨提示:答案为网友推荐,仅供参考