Esempio n. 1
0
        /// <summary>
        /// Adds ServiceDescriptor to Episerver services
        /// </summary>
        /// <param name="serviceConfiguration"></param>
        /// <param name="serviceCollection"></param>
        /// <returns></returns>
        public static IServiceConfigurationProvider AddServiceCollection(this IServiceConfigurationProvider serviceConfiguration, IServiceCollection serviceCollection)
        {
            foreach (var service in serviceCollection)
            {
                if (service.ImplementationInstance != null)
                {
                    serviceConfiguration.Add(service.ServiceType, service.ImplementationInstance);
                }
                else if (service.ImplementationFactory != null)
                {
                    serviceConfiguration.Add
                    (
                        service.ServiceType,
                        (locator) => locator.GetService(service.ServiceType),
                        ConvertLifeTime(service.Lifetime)
                    );
                }
                else if (service.ImplementationType != null)
                {
                    serviceConfiguration.Add
                    (
                        service.ServiceType,
                        service.ImplementationType,
                        ConvertLifeTime(service.Lifetime)
                    );
                }
            }

            return(serviceConfiguration);
        }
Esempio n. 2
0
        /// <summary>
        /// Add classes with [Registration] attributes to Episerver Service Locator.
        /// </summary>
        /// <param name="services"></param>
        /// <param name="assembliesToScan">DiscoveredAssemblies to scan for types with RegistrationAttribute,
        ///      if null DiscoveredAssemblies with DiscoverableAssemblyAttribute are used to filter.</param>
        /// <param name="dependentRegistrationFactory">Optional custom IDependentRegistrationFacory</param>
        /// <param name="registrationSorter">Optional custom registration sorter.</param>
        /// <param name="addServiceAccessor">Optional function to determine if a service accessor is needed for Inject&lt;T> usages</param>
        /// <param name="registrationFilter">Optional action to modify regististrations, add/remove or changelifestyle.</param>
        public static void AddDotNetStarterRegistrations
        (
            this IServiceConfigurationProvider services,
            IEnumerable <Assembly> assembliesToScan = null,
            IDependentRegistrationFactory dependentRegistrationFactory = null,
            IRegistrationSorter registrationSorter = null,
            Func <DependentRegistration, bool> addServiceAccessor            = null,
            Action <ICollection <DependentRegistration> > registrationFilter = null
        )
        {
            var assemblies = assembliesToScan ??
                             AssemblyLoader()
                             .Where(a => a.GetCustomAttribute <DiscoverableAssemblyAttribute>() != null);
            var registrations =
                (dependentRegistrationFactory ?? new DependentRegistrationFactory()).
                CreateDependentRegistrations(assemblies);

            registrationFilter?.Invoke(registrations);
            (registrationSorter ?? new RegistrationSorter()).Sort(registrations);

            foreach (var t in registrations)
            {
                var service = services.Add
                              (
                    t.Registration.ServiceType,
                    t.Implementation,
                    (t.CustomLifeCycle ?? t.Registration.Lifecycle).ConvertToServiceLifetime()
                              );

                if (addServiceAccessor?.Invoke(t) == true)
                {
                    service.AddServiceAccessor();
                }
            }
        }
Esempio n. 3
0
 public static void SetupDefaultConvention(IServiceConfigurationProvider container)
 {
     container.Add(AssemblyScanner.ForAssamby <DependencyResolverInitialization>().GetInterfaceWithDefaultConventions());
 }