Пример #1
0
        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();
        }
Пример #2
0
        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();
        }