Cycle de progression Faire (quelque chose qui marche) -> comprendre ce que l’on fait/comment cela marche -> pousser plus loin les notions
| // 1 Namespace CodeNamespace _namespace = new CodeNamespace("MyNamespace"); // ajout d'imports _namespace.Imports.Add(new CodeNamespaceImport("System.Text")); // 2 création d'une classe CodeTypeDeclaration _class = new CodeTypeDeclaration("Contact"); _class.Attributes = MemberAttributes.Public; _class.Comments.Add(new CodeCommentStatement("mon commentaire 1")); // a - ajout de fields à la classe _class.Members.Add(new CodeMemberField(new CodeTypeReference(typeof(string)), "_contactName")); // b - ajout de properties à la classe CodeMemberProperty property1=new CodeMemberProperty(); property1.Attributes = MemberAttributes.Public | MemberAttributes.Final; property1.Name = "ContactName"; property1.Type = new CodeTypeReference(typeof(string)); property1.HasGet = true; property1.HasSet = true; // get property1.GetStatements.Add(new CodeMethodReturnStatement(new CodeFieldReferenceExpression(new CodeThisReferenceExpression(),"_contactName"))); // set property1.SetStatements.Add(new CodeAssignStatement( new CodeFieldReferenceExpression(new CodeThisReferenceExpression(),"_contactName"), new CodePropertySetValueReferenceExpression())); _class.Members.Add(property1); // c - ajout de methodes à la classe CodeMemberMethod method1 = new CodeMemberMethod(); method1.Attributes = MemberAttributes.Public | MemberAttributes.Static; method1.ReturnType = new CodeTypeReference(typeof(string)); method1.Name = "GetContactName"; method1.Statements.Add(new CodeSnippetStatement("this._contactName="Romagny";")); method1.Statements.Add(new CodeMethodReturnStatement(new CodeArgumentReferenceExpression("this._contactName"))); |
| StringBuilder stringBuilder = new StringBuilder(); StringWriter stringWriter = new StringWriter(stringBuilder); CSharpCodeProvider provider = new CSharpCodeProvider(); // CodeGeneratorOptions options = new CodeGeneratorOptions(); options.BracingStyle = "C"; options.IndentString = " "; provider.GenerateCodeFromNamespace(_namespace,stringWriter, options); richTextBox1.Text = stringBuilder.ToString(); |
| namespace MyNamespace { using System.Text; // mon commentaire 1 public class Contact { private string _contactName; public string ContactName { get { return this._contactName; } set { this._contactName = value; } } public static string GetContactName() { this._contactName="Romagny"; return this._contactName; } } } |