public void TestGoTo() { var c = new CodeDomGenerator(); c.AddNamespace("Samples").AddClass("cls") .AddMethod(MemberAttributes.Static | MemberAttributes.Public, typeof(int), () => "foo", Emit.declare(typeof(int), "i"), Emit.@goto("x"), Emit.assignVar("i", () => 10), Emit.label("x"), Emit.@return((int i) => i)) ; Console.WriteLine(c.GenerateCode(CodeDomGenerator.Language.CSharp)); Console.WriteLine(c.GenerateCode(CodeDomGenerator.Language.VB)); var ass = c.Compile(); Assert.IsNotNull(ass); Type TestClass = ass.GetType("Samples.cls"); Assert.IsNotNull(TestClass); object t = TestClass.InvokeMember(null, System.Reflection.BindingFlags.CreateInstance, null, null, null); Assert.IsNotNull(t); Assert.AreEqual(0, TestClass.InvokeMember("foo", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.InvokeMethod, null, t, null)); }