public void Builder_Loop() { var c = new CodeDomGenerator(); c.AddNamespace("Samples").AddClass(Define.Class("TestClass") .AddMethod( Define.Method(MemberAttributes.Public | MemberAttributes.Static, typeof(int), (int a) => "Test", Emit.declare("res", () => 0), Emit.@for( "i", //int i (int a) => a, // = a (int i) => i < 10, //i<10 (int i) => i + 1, //i+=1 Emit.assignVar("res", (int res) => res + 1) ), Emit.@return((int res) => res)) ) .AddMethod( Define.Method(MemberAttributes.Public | MemberAttributes.Static, typeof(int), (int a) => "Test1", Emit.declare("res", () => 0), Emit.@for("i", (int a) => a, (int i) => i < 10, () => CodeDom.VarRef <int>("i") + 2, Emit.assignVar("res", () => CodeDom.VarRef <int>("res") + 1) ), Emit.@return(() => CodeDom.VarRef <int>("res") + 100)) ) ); Console.WriteLine(c.GenerateCode(CodeDomGenerator.Language.CSharp)); Console.WriteLine(c.GenerateCode(CodeDomGenerator.Language.VB)); Assert.AreEqual(5, c.Compile().GetType("Samples.TestClass").GetMethod("Test") .Invoke(null, new object[] { 5 })); Assert.AreEqual(103, c.Compile().GetType("Samples.TestClass").GetMethod("Test1") .Invoke(null, new object[] { 5 })); }