Mono.CSharp.PropertyBase.PropertyMethod.Define C# (CSharp) Method

Define() public method

public Define ( DeclSpace parent ) : MethodBuilder
parent DeclSpace
return System.Reflection.Emit.MethodBuilder
            public virtual MethodBuilder Define(DeclSpace parent)
            {
                TypeContainer container = parent.PartialContainer;

                //
                // Check for custom access modifier
                //
                if ((ModFlags & Modifiers.AccessibilityMask) == 0) {
                    ModFlags |= method.ModFlags;
                    flags = method.flags;
                } else {
                    if (container.Kind == MemberKind.Interface)
                        Report.Error (275, Location, "`{0}': accessibility modifiers may not be used on accessors in an interface",
                            GetSignatureForError ());

                    if ((method.ModFlags & Modifiers.ABSTRACT) != 0 && (ModFlags & Modifiers.PRIVATE) != 0) {
                        Report.Error (442, Location, "`{0}': abstract properties cannot have private accessors", GetSignatureForError ());
                    }

                    CheckModifiers (ModFlags);
                    ModFlags |= (method.ModFlags & (~Modifiers.AccessibilityMask));
                    ModFlags |= Modifiers.PROPERTY_CUSTOM;
                    flags = ModifiersExtensions.MethodAttr (ModFlags);
                    flags |= (method.flags & (~MethodAttributes.MemberAccessMask));
                }

                CheckAbstractAndExtern (block != null);
                CheckProtectedModifier ();

                if (block != null && block.IsIterator)
                    Iterator.CreateIterator (this, Parent.PartialContainer, ModFlags, Compiler);

                return null;
            }