示例#1
0
        /// <summary>
        /// Generates the navigation property.
        /// </summary>
        /// <param name="xmlNamespace">The XML namespace.</param>
        /// <param name="prop">The Navigation property.</param>
        /// <returns>IEnumerable of XElement</returns>
        protected override XElement GenerateNavigationProperty(XNamespace xmlNamespace, NavigationProperty prop)
        {
            var content = base.GenerateNavigationProperty(xmlNamespace, prop);
            PropertyAccessModifierAnnotation accessModifierAnnotation = prop.Annotations.OfType <PropertyAccessModifierAnnotation>().SingleOrDefault();

            if (accessModifierAnnotation != null)
            {
                content.Add(GeneratePropertyAccessModifier(accessModifierAnnotation));
            }

            return(content);
        }
示例#2
0
        private static IEnumerable <XAttribute> GeneratePropertyAccessModifier(PropertyAccessModifierAnnotation annotation)
        {
            List <XAttribute> visibilities     = new List <XAttribute>();
            AccessModifier    getterVisibility = annotation.GetterAccessModifier;
            AccessModifier    setterVisibility = annotation.SetterAccessModifier;

            if (getterVisibility != AccessModifier.Unspecified)
            {
                visibilities.Add(new XAttribute(EdmConstants.CodegenNamespace + "GetterAccess", annotation.GetterAccessModifier.ToString()));
            }

            if (setterVisibility != AccessModifier.Unspecified)
            {
                visibilities.Add(new XAttribute(EdmConstants.CodegenNamespace + "SetterAccess", annotation.SetterAccessModifier.ToString()));
            }

            return(visibilities.Count > 0 ? visibilities : null);
        }
示例#3
0
        /// <summary>
        /// Generates Property element for a given <see cref="MemberProperty"/>
        /// </summary>
        /// <param name="xmlNamespace">XML namespace to use</param>
        /// <param name="prop">Entity or ComplexType property</param>
        /// <returns>Property XElement</returns>
        protected override XElement GenerateProperty(XNamespace xmlNamespace, MemberProperty prop)
        {
            var element = base.GenerateProperty(xmlNamespace, prop);
            PropertyAccessModifierAnnotation accessModifierAnnotation = prop.Annotations.OfType <PropertyAccessModifierAnnotation>().SingleOrDefault();

            if (accessModifierAnnotation != null)
            {
                element.Add(GeneratePropertyAccessModifier(accessModifierAnnotation));
            }

            CollectionKindAnnotation collectionKindAnnotation = prop.Annotations.OfType <CollectionKindAnnotation>().SingleOrDefault();

            if (collectionKindAnnotation != null)
            {
                element.Add(new XAttribute("CollectionKind", collectionKindAnnotation.CollectionKind.ToString()));
            }

            return(element);
        }
示例#4
0
        private static void ApplyPropertyAccessModifier(CodeMemberAutoImplementedProperty codeProp, PropertyAccessModifierAnnotation propertyAccessModifierAnnotation)
        {
            if (propertyAccessModifierAnnotation != null)
            {
                var maxVisibility = (AccessModifier)Math.Max(
                    (int)propertyAccessModifierAnnotation.GetterAccessModifier,
                    (int)propertyAccessModifierAnnotation.SetterAccessModifier);

                codeProp.Attributes &= ~MemberAttributes.AccessMask;
                codeProp.Attributes |= ConvertAccessModifierToMemberAttributes(maxVisibility);

                if (maxVisibility != propertyAccessModifierAnnotation.GetterAccessModifier)
                {
                    codeProp.GetAttributes =
                        ConvertAccessModifierToMemberAttributes(propertyAccessModifierAnnotation.GetterAccessModifier);
                }

                if (maxVisibility != propertyAccessModifierAnnotation.SetterAccessModifier)
                {
                    codeProp.SetAttributes =
                        ConvertAccessModifierToMemberAttributes(propertyAccessModifierAnnotation.SetterAccessModifier);
                }
            }
        }