Exemplo n.º 1
0
        private void RegisterServiceImplementations(Assembly assembly, Type interfaceType, ResourceDescriptor resourceDescriptor)
        {
            var genericArguments = interfaceType.GetTypeInfo().GenericTypeParameters.Length == 2
                ? new [] { resourceDescriptor.ResourceType, resourceDescriptor.IdType }
                : new [] { resourceDescriptor.ResourceType };

            var service = TypeLocator.GetGenericInterfaceImplementation(assembly, interfaceType, genericArguments);

            if (service.implementation != null)
            {
                _services.AddScoped(service.registrationInterface, service.implementation);
            }
        }
        private ServiceDiscoveryFacade RegisterServiceImplementations(Assembly assembly, Type interfaceType)
        {
            var identifiables = TypeLocator.GetIdentifableTypes(assembly);

            foreach (var identifiable in identifiables)
            {
                var service = TypeLocator.GetGenericInterfaceImplementation(assembly, interfaceType, identifiable.ResourceType, identifiable.IdType);
                if (service.implementation != null)
                {
                    _services.AddScoped(service.registrationInterface, service.implementation);
                }
            }

            return(this);
        }
        private void RegisterServiceImplementations(Assembly assembly, Type interfaceType, ResourceDescriptor resourceDescriptor)
        {
            if (resourceDescriptor.IdType == typeof(Guid) && interfaceType.GetTypeInfo().GenericTypeParameters.Length == 1)
            {
                return;
            }
            var genericArguments = interfaceType.GetTypeInfo().GenericTypeParameters.Length == 2 ? new[] { resourceDescriptor.ResourceType, resourceDescriptor.IdType } : new[] { resourceDescriptor.ResourceType };
            var service          = TypeLocator.GetGenericInterfaceImplementation(assembly, interfaceType, genericArguments);

            //if(service.implementation?.Name == "CustomArticleService" && genericArguments[0].Name != "Article")
            //{
            //    service = TypeLocator.GetGenericInterfaceImplementation(assembly, interfaceType, genericArguments);
            //}
            if (service.implementation != null)
            {
                _services.AddScoped(service.registrationInterface, service.implementation);
            }
        }