/// <summary>
        /// Determines if the package has a a cycle through recursion
        /// </summary>
        /// <param name="package">Package to check</param>
        /// <param name="originalPackageName">Original Package Name</param>
        /// <returns></returns>
        private bool PackageHasCycle(IPackage package, string originalPackageName)
        {
            // When dependency is null, can't be a cycle
            if (package.Dependency == null)
            {
                return(false);
            }

            // When package and its dependency have the same name, its a cycle
            if (package.Equals(package.Dependency))
            {
                return(true);
            }

            // When dependency Name is the same as the original package name, its a cycle
            if (package.Dependency.Name == originalPackageName)
            {
                return(true);
            }

            // Recurse through the dependency tree
            return(PackageHasCycle(package.Dependency, originalPackageName));
        }
        private bool packageHasCycle(IPackage package, string originalPackageName)
        {
            // If the dependency is null, can't be a cycle
            if (package.Dependency == null)
            {
                return(false);
            }

            // If package name = dependency name, cycle exists
            if (package.Equals(package.Dependency))
            {
                return(true);
            }

            // If originaPackageName is same as dependency Name, cycle exists
            if (package.Dependency.packageName == originalPackageName)
            {
                return(true);
            }

            // Recurse through dependencies
            return(packageHasCycle(package.Dependency, originalPackageName));
        }
        // Determines if the package has a a loop through recursion
        private bool PackageHasLoop(IPackage package, string originalnameOfPackage)
        {
            //dependency cant be null. When dependency is null, can't be a cycle
            if (package.Dependency == null)
            {
                return(false);
            }

            // its loop When dependency Name is the same as the original package name
            if (package.Dependency.Name == originalnameOfPackage)
            {
                return(true);
            }

            //one more condition to check loop is When package and its dependency have the same name
            if (package.Equals(package.Dependency))
            {
                return(true);
            }


            return(PackageHasLoop(package.Dependency, originalnameOfPackage));
        }
예제 #4
0
 /// <inheritdoc />
 public virtual bool Equals(SearchResult other)
 {
     return(package.Equals(other));
 }
 public bool Equals(IPackage?other)
 {
     return(_package.Equals(other));
 }