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); } }