Babel.Compiler.TypeElementCreatingVisitor.VisitAttr C# (CSharp) 메소드

VisitAttr() 공개 메소드

public VisitAttr ( AttrDefinition attr ) : void
attr AttrDefinition
리턴 void
        public override void VisitAttr(AttrDefinition attr)
        {
            attr.TypeSpecifier.Accept(this);
            Type attrType = attr.TypeSpecifier.RawType;
            TypeBuilder typeBuilder = currentClass.TypeBuilder;
            MethodAttributes readerAttributes =
                MethodAttributes.Virtual | MethodAttributes.HideBySig;
            MethodAttributes writerAttributes =
                MethodAttributes.Virtual | MethodAttributes.HideBySig;
            switch (attr.Modifier) {
            case AttrModifier.None:
                readerAttributes |= MethodAttributes.Public;
                writerAttributes |= MethodAttributes.Public;
                break;
            case AttrModifier.Private:
                readerAttributes |= MethodAttributes.Private;
                writerAttributes |= MethodAttributes.Private;
                break;
            case AttrModifier.Readonly:
                readerAttributes |= MethodAttributes.Public;
                writerAttributes |= MethodAttributes.Private;
                break;
            }
            attr.FieldBuilder =
                typeBuilder.DefineField("_" + attr.Name,
                                        attrType,
                                        FieldAttributes.Private);
            try {
                attr.Reader = DefineReader(typeBuilder, attr.Name,
                                           readerAttributes,
                                           attr.TypeSpecifier);
                attr.Writer = DefineWriter(typeBuilder, attr.Name,
                                           readerAttributes,
                                           attr.TypeSpecifier);
            }
            catch (MethodConflictionException e) {
                report.Error(attr.Location, e.Message);
            }
        }