Knowing all the classes in the CodeDOM namespace isn't very useful unless one knows how to appy them. This blog entry will serve as a cheat sheet for the most commonly used expressions and statements. This page is a work in progress.


MyClass.Method("value", 4)

System.CodeDom.CodeExpression expr = new CodeMethodInvokeExpression(
   new CodeMethodReferenceExpression(new CodeVariableReferenceExpression("MyClass"), "Method"), 
   new CodePrimitiveExpression("value"), 
   new CodePrimitiveExpression (4)));

MyClass.Method("value", GetItemByIdex(4))

System.CodeDom.CodeExpression expr = new CodeMethodInvokeExpression(
   new CodeMethodReferenceExpression(new CodeVariableReferenceExpression ("MyClass"), "Method"), 
   new CodePrimitiveExpression("value"), 
   new CodeMethodInvokeExpression(
      new CodeMethodReferenceExpression (new CodeThisReferenceExpression (), "GetItemByIndex"),
      new CodePrimitiveExpression (4))));

string.Empty

System.CodeDom.CodeExpression expr = new System.CodeDom.CodeFieldReferenceExpression(new System.CodeDom.CodeTypeReferenceExpression (typeof(string)), "Empty");

this.Method

System.CodeDom.CodeExpression expr = new System.CodeDom.CodeFieldReferenceExpression(new System.CodeDom.CodeThisReferenceExpression (), "Property"); // this.Property

x = 0xFF

System.CodeDom.CodeExpression expr = new CodeVariableReferenceExpression("x"),
   new CodeSnippetExpression ("0xFF")));

for (int i = 0; (i< 8); i=(i+1)){}

CodeVariableReferenceExpression var = new CodeVariableReferenceExpression ("i");
CodeIterationStatement forLoop = new CodeIterationStatement(
   new CodeVariableDeclarationStatement(typeof(int), "i", new CodePrimitiveExpression (0)),
   new CodeBinaryOperatorExpression(var, CodeBinaryOperatorType.LessThan, new CodePrimitiveExpression (8)),
   new CodeAssignStatement(var, new CodeBinaryOperatorExpression(var, CodeBinaryOperatorType.Add, new CodePrimitiveExpression (1)))));


* the extra white space in some of the code is to avoid the censoring mechanism which I didn't want to turn off.