IsAlreadyAdded() protected method

Checks if a reference is already added. The method parses all references and compares the Url.
protected IsAlreadyAdded ( ) : bool
return bool
Esempio n. 1
0
        /// <summary>
        /// Adds a reference to this container using the selector data structure to identify it.
        /// </summary>
        /// <param name="selectorData">data describing selected component</param>
        /// <returns>Reference in case of a valid reference node has been created. Otherwise null</returns>
        public virtual ReferenceNode AddReferenceFromSelectorData(VSCOMPONENTSELECTORDATA selectorData, string wrapperTool = null)
        {
            //Make sure we can edit the project file
            ThreadHelper.ThrowIfNotOnUIThread();

            if (!this.ProjectMgr.QueryEditProjectFile(false))
            {
                throw Marshal.GetExceptionForHR(VSConstants.OLE_E_PROMPTSAVECANCELLED);
            }

            //Create the reference node
            ReferenceNode node = null;

            try
            {
                node = CreateReferenceNode(selectorData, wrapperTool);
            }
            catch (ArgumentException)
            {
                // Some selector data was not valid.
            }


            //Add the reference node to the project if we have a valid reference node
            if (node != null)
            {
                // Does such a reference already exist in the project?
                ReferenceNode existingNode;
                if (node.IsAlreadyAdded(out existingNode))
                {
                    return(existingNode);
                }
                // This call will find if the reference is in the project and, in this case
                // will not add it again, so the parent node will not be set.
                node.AddReference();
                if (null == node.Parent)
                {
                    // The reference was not added, so we can not return this item because it
                    // is not inside the project.
                    return(null);
                }
            }

            return(node);
        }