/// <summary>
        /// Sets the relationship link.
        /// </summary>
        /// <param name="linkInfoData">The link info data.</param>
        /// <param name="relationshipLink">The relationship link.</param>
        /// <returns><see cref="LinkInfoData"/> on which relationship link has been set.</returns>
        public static LinkInfoData SetRelationshipLink(this LinkInfoData linkInfoData, Uri relationshipLink)
        {
            ExceptionUtilities.CheckArgumentNotNull(linkInfoData, "linkInfoData");

            linkInfoData.RelationshipLink = relationshipLink;

            return(linkInfoData);
        }
        /// <summary>
        /// Sets the navigation link.
        /// </summary>
        /// <param name="linkInfoData">The link info data.</param>
        /// <param name="navigationLink">The navigation link.</param>
        /// <returns><see cref="LinkInfoData"/> on which navigation link has been set.</returns>
        public static LinkInfoData SetNavigationLink(this LinkInfoData linkInfoData, Uri navigationLink)
        {
            ExceptionUtilities.CheckArgumentNotNull(linkInfoData, "linkInfoData");

            linkInfoData.NavigationLink = navigationLink;

            return(linkInfoData);
        }
        /// <summary>
        /// Creates a new link info data and adds it to this entity descriptor data
        /// </summary>
        /// <param name="name">The name of the link</param>
        /// <returns>The link info data</returns>
        public LinkInfoData CreateLinkInfoData(string name)
        {
            ExceptionUtilities.CheckArgumentNotNull(name, "name");
            ExceptionUtilities.Assert(!this.linkInfos.Any(l => l.Name == name), "Link info data with name '{0}' already exists on entity descriptor data: {1}", name, this);

            var linkInfoData = new LinkInfoData(name);

            this.linkInfos.Add(linkInfoData);

            return(linkInfoData);
        }
Beispiel #4
0
        /// <summary>
        /// Returns another LinkInfoData with equivalent values but no references to the current instance
        /// </summary>
        /// <returns>A cloned LinkInfoData</returns>
        public LinkInfoData Clone()
        {
            var clone = new LinkInfoData(this.Name);

            if (this.NavigationLink != null)
            {
                clone.NavigationLink = new Uri(this.NavigationLink.OriginalString, UriKind.RelativeOrAbsolute);
            }

            if (this.RelationshipLink != null)
            {
                clone.RelationshipLink = new Uri(this.RelationshipLink.OriginalString, UriKind.RelativeOrAbsolute);
            }

            return clone;
        }
Beispiel #5
0
        /// <summary>
        /// Returns another LinkInfoData with equivalent values but no references to the current instance
        /// </summary>
        /// <returns>A cloned LinkInfoData</returns>
        public LinkInfoData Clone()
        {
            var clone = new LinkInfoData(this.Name);

            if (this.NavigationLink != null)
            {
                clone.NavigationLink = new Uri(this.NavigationLink.OriginalString, UriKind.RelativeOrAbsolute);
            }

            if (this.RelationshipLink != null)
            {
                clone.RelationshipLink = new Uri(this.RelationshipLink.OriginalString, UriKind.RelativeOrAbsolute);
            }

            return(clone);
        }
        internal static Uri BuildLinkUri(LinkDescriptorData linkDescriptorData, LinkInfoData info)
        {
            Uri linkUri;
            if (info != null && info.RelationshipLink != null)
            {
                linkUri = info.RelationshipLink;
            }
            else
            {
                ExceptionUtilities.CheckObjectNotNull(linkDescriptorData.SourceDescriptor.EditLink, "Edit link of source descriptor cannot be null");
                linkUri = new Uri(UriHelpers.ConcatenateUriSegments(linkDescriptorData.SourceDescriptor.EditLink.OriginalString, Endpoints.Ref, linkDescriptorData.SourcePropertyName), UriKind.RelativeOrAbsolute);
            }

            return linkUri;
        }
        /// <summary>
        /// Creates a new link info data and adds it to this entity descriptor data
        /// </summary>
        /// <param name="name">The name of the link</param>
        /// <returns>The link info data</returns>
        public LinkInfoData CreateLinkInfoData(string name)
        {
            ExceptionUtilities.CheckArgumentNotNull(name, "name");
            ExceptionUtilities.Assert(!this.linkInfos.Any(l => l.Name == name), "Link info data with name '{0}' already exists on entity descriptor data: {1}", name, this);

            var linkInfoData = new LinkInfoData(name);
            
            this.linkInfos.Add(linkInfoData);

            return linkInfoData;
        }