private IEnumerable <IPartRegistry <IContractService> > GetPublicPartRegistryInstances()
        {
            var registryInstancesLocatedInDomain = this.assemblies
                                                   .SelectMany(x => PartRegistryTypeFilter.Filter(x.GetTypes()))
                                                   .Select(CreatePartRegistryInstance);

            return(registryInstancesLocatedInDomain);
        }
        private static IEnumerable <IPartRegistry <IContractService> > GetPublicPartRegistryInstancesInAppDomain(AppDomain domain)
        {
            var registryInstancesLocatedInDomain = domain
                                                   .GetAssemblies()
                                                   .SelectMany(x => PartRegistryTypeFilter.Filter(x.GetTypes()))
                                                   .Select(CreatePartRegistryInstance);

            return(registryInstancesLocatedInDomain);
        }
        /// <summary>
        /// Locates <see cref="IPartRegistry{TContractService}"/> instances in the available <see cref="IPartRegistry{TContractService}"/> collection.
        /// </summary>
        /// <returns>An <see cref="IEnumerable{T}"/> of <see cref="IPartRegistry{TContractService}"/> instances.</returns>
        public IEnumerable <IPartRegistry <IContractService> > GetRegistries()
        {
            var reachableTypes = this.registries
                                 .Where(TypeScannerIsNotNull)
                                 .SelectMany(GetTypesFromTypeScanner) // This should filter on actual type. Need to fix test
                                 .ToList();

            var typesThatMatchCritierias = PartRegistryTypeFilter.Filter(reachableTypes)
                                           .Where(RegistryIsNotKnown)
                                           .ToList();

            if (typesThatMatchCritierias.Count() > 0)
            {
                this.registries = this.CreateInstancesAndRetrieveSateliteRegistries(typesThatMatchCritierias);
            }

            return(this.registries);
        }