void EmitType(ModuleBuilder Parent, CodeTypeDeclaration Decl) { TypeBuilder Type = Parent.DefineType(Decl.Name, TypeAttributes.Public); // Allow for late binding var LocalMethods = new Dictionary <string, MethodWriter>(); var LocalParameters = new Dictionary <string, Type[]>(); foreach (CodeMemberMethod Method in Decl.Members) { var Writer = new MethodWriter(Type, Method, Methods, Mirror); LocalParameters.Add(Method.Name, GetParameterTypes(Method.Parameters)); LocalMethods.Add(Method.Name, Writer); } foreach (var Writer in LocalMethods.Values) { Writer.ParameterTypes = LocalParameters; Writer.Methods = LocalMethods; Writer.Emit(); if (Writer.IsEntryPoint) { EntryPoint = Writer.Method; } } Type.CreateType(); }
void EmitType(ModuleBuilder Parent, CodeTypeDeclaration Decl) { TypeBuilder Type = Parent.DefineType(Decl.Name, TypeAttributes.Public); // Allow for late binding var LocalMethods = new Dictionary<string, MethodWriter>(); var LocalParameters = new Dictionary<string, Type[]>(); foreach(CodeMemberMethod Method in Decl.Members) { var Writer = new MethodWriter(Type, Method, Methods, Mirror); LocalParameters.Add(Method.Name, GetParameterTypes(Method.Parameters)); LocalMethods.Add(Method.Name, Writer); } foreach(var Writer in LocalMethods.Values) { Writer.ParameterTypes = LocalParameters; Writer.Methods = LocalMethods; Writer.Emit(); if(Writer.IsEntryPoint) EntryPoint = Writer.Method; } Type.CreateType(); }