Esempio n. 1
0
        public static void SetupDependencies(IStashboxContainer container, ILogger logger)
        {
            container.RegisterInstance(logger);
            container.Register <ILoggerFactory, SerilogLoggerFactory>();
            container.Register(typeof(IValidationTextFormatter <>), typeof(SingleLineFormatter));

            container.RegisterSingleton <ConfigProvider>();
            container.RegisterSingleton <MigoProxyService>();

            container.Register <MainWindowViewModel>();
        }
        private static void RegisterComponents(IStashboxContainer container)
        {
            container.Register <ModelValidatorProvider, StashboxDataAnnotationsModelValidatorProvider>();
            container.Register <ModelValidatorProvider, StashboxModelValidatorProvider>(context =>
                                                                                        context.WithInjectionParameters(new KeyValuePair <string, object>("modelValidatorProviders",
                                                                                                                                                          ModelValidatorProviders.Providers.Where(provider => !(provider is DataAnnotationsModelValidatorProvider)).ToArray())));

            container.Register <IFilterProvider, StashboxFilterAttributeFilterProvider>();
            container.Register <IFilterProvider, StashboxFilterProvider>(context =>
                                                                         context.WithInjectionParameters(new KeyValuePair <string, object>("filterProviders",
                                                                                                                                           FilterProviders.Providers.Where(provider => !(provider is FilterAttributeFilterProvider)).ToArray())));

            RegisterControllers(container);
        }
Esempio n. 3
0
        /// <summary>
        /// Sets a custom <see cref="ModelValidatorProvider"/> which enables property injection in model validators.
        /// </summary>
        /// <exception cref="ArgumentNullException">
        /// If <paramref name="container"/> or <paramref name="config"/> is <c>null</c>.
        /// </exception>
        public static IStashboxContainer AddWebApiModelValidatorInjection(this IStashboxContainer container, HttpConfiguration config)
        {
            Shield.EnsureNotNull(container, nameof(container));
            Shield.EnsureNotNull(config, nameof(config));

            container.Register <ModelValidatorProvider, StashboxDataAnnotationsModelValidatorProvider>();
            container.Register <ModelValidatorProvider, StashboxModelValidatorProvider>(context => context
                                                                                        .WithInjectionParameters(new KeyValuePair <string, object>("modelValidatorProviders", config.Services.GetServices(typeof(ModelValidatorProvider))
                                                                                                                                                   .Where(provider => !(provider is DataAnnotationsModelValidatorProvider))
                                                                                                                                                   .Cast <ModelValidatorProvider>())));

            config.Services.Clear(typeof(ModelValidatorProvider));

            return(container);
        }
Esempio n. 4
0
        public void ConfigureContainer(IStashboxContainer container)
        {
            var proxyBuilder = new DefaultProxyBuilder();

            container.Register <IInterceptor, NoInterceptor>();
            container.RegisterDecorator <ILevel2Service>(proxyBuilder.CreateInterfaceProxyTypeWithTargetInterface(typeof(ILevel2Service), Array.Empty <Type>(), ProxyGenerationOptions.Default));
            container.RegisterDecorator <ILevel2bService>(proxyBuilder.CreateInterfaceProxyTypeWithTargetInterface(typeof(ILevel2bService), Array.Empty <Type>(), ProxyGenerationOptions.Default));
            container.RegisterDecorator <ILevel3Service>(proxyBuilder.CreateInterfaceProxyTypeWithTargetInterface(typeof(ILevel3Service), Array.Empty <Type>(), ProxyGenerationOptions.Default));
        }
Esempio n. 5
0
        /// <summary>
        /// Sets a custom <see cref="IFilterProvider"/> which enables property injection in filters.
        /// </summary>
        /// <exception cref="ArgumentNullException">
        /// If <paramref name="container"/> or <paramref name="config"/> is <c>null</c>.
        /// </exception>
        public static IStashboxContainer AddWebApiFilterProviderInjection(this IStashboxContainer container, HttpConfiguration config)
        {
            Shield.EnsureNotNull(container, nameof(container));
            Shield.EnsureNotNull(config, nameof(config));

            container.Register <IFilterProvider, StashboxFilterProvider>(context => context
                                                                         .WithInjectionParameters(new KeyValuePair <string, object>("filterProviders", config.Services.GetServices(typeof(IFilterProvider))
                                                                                                                                    .Cast <IFilterProvider>())));

            config.Services.Clear(typeof(IFilterProvider));

            return(container);
        }
Esempio n. 6
0
 public void Register(Func <object> factory, Type serviceType, string contract = null)
 {
     _container.Register(serviceType, configurator =>
     {
         if (string.IsNullOrEmpty(contract))
         {
             configurator.WithInstance(factory())
             .AsImplementedTypes();
         }
         else
         {
             configurator.WithInstance(factory())
             .WithName(contract)
             .AsImplementedTypes();
         }
     });
 }
Esempio n. 7
0
 public void Compose(IStashboxContainer container)
 {
     container.Register <ITest1, Test11>();
     container.Register <ITest2, Test12>();
 }