Beispiel #1
0
        public virtual List <JEntityDeclaration> ExportConstructor(IMethod ctor)
        {
            var ctorName = GetClassName(ctor.DeclaringTypeDefinition).ToJs();// SkJs.JName(ctor);
            var func     = new JFunction {
                Parameters = new List <string>()
            };
            var me2 = new JMethodDeclaration {
                Name = ctorName, MethodDefinition = ctor, MethodBody = ExportConstructorBody(ctor)
            };

            me2.Parameters = ExportParameters(ctor.Parameters);
            ImportModifiers(ctor, me2);
            //ExportConstructorParameters(ctor, func);
            return(new List <JEntityDeclaration> {
                me2
            });
        }
Beispiel #2
0
        public virtual List <JEntityDeclaration> ExportMethod(IMethod me)
        {
            var jma = JMeta.GetJMethodAttribute(me);

            if (jma != null && (jma.Global || jma.GlobalCode))
            {
                throw new NotSupportedException();

                //return CreateGlobalImporter().ExportMethod(me);
            }
            else
            {
                var ce     = me.GetDeclaringTypeDefinition();
                var member = me.JAccess();

                var func = new JFunction();
                //func.Name = me.Name;
                func.Parameters = ExportMethodParameters(me);
                func.Block      = ExportMethodBody(me);
                if (JsCodeImporter.SupportClrYield)
                {
                    func = ApplyYield(func);
                }
                var typeParams = me.TypeParameters.Select(t => t.JAccess()).ToList();
                var decl       = new JMethodDeclaration
                {
                    Name             = JNaming.JName(me),
                    MethodDefinition = me,
                    MethodBody       = func.Block,
                    Parameters       = ExportParameters(me.Parameters),
                    Type             = me.ReturnType.JAccess(),
                    TypeParameters   = typeParams,
                };
                ImportModifiers(me, decl);

                if (me.IsOverride || me.ImplementedInterfaceMembers.IsNotNullOrEmpty())
                {
                    decl.Annotations.Add(new JAnnotationDeclaration {
                        Name = "Override"
                    });
                }
                return(new List <JEntityDeclaration> {
                    decl
                });
            }
        }