/// <summary>
 /// Default constructor
 /// </summary>
 /// <param name="strategyCreator"></param>
 /// <param name="typesToExport"></param>
 /// <param name="scopeConfiguration"></param>
 public ExportTypeSetConfiguration(IActivationStrategyCreator strategyCreator, IEnumerable <Type> typesToExport, IInjectionScopeConfiguration scopeConfiguration)
 {
     _strategyCreator    = strategyCreator;
     _typesToExport      = typesToExport;
     _scopeConfiguration = scopeConfiguration;
     _whereFilter        = new GenericFilterGroup <Type>(ShouldSkipType, ExcludeTypesFilter);
 }
Example #2
0
        /// <summary>
        /// Configuration object constructor
        /// </summary>
        /// <param name="configuration"></param>
        /// <param name="parent"></param>
        /// <param name="name"></param>
        public InjectionScope(IInjectionScopeConfiguration configuration, IInjectionScope parent, string name) :
            base(parent, name, new ActivationStrategyDelegateCache())
        {
            configuration.SetInjectionScope(this);

            InternalFieldStorage.ScopeConfiguration = configuration;

            InternalFieldStorage.InjectionContextCreator = configuration.Implementation.Locate <IInjectionContextCreator>();

            InternalFieldStorage.CanLocateTypeService = configuration.Implementation.Locate <ICanLocateTypeService>();

            InternalFieldStorage.ActivationStrategyCompiler = configuration.Implementation.Locate <IActivationStrategyCompiler>();

            InternalFieldStorage.StrategyCollectionContainer =
                AddDisposable(configuration.Implementation.Locate <IActivationStrategyCollectionContainer <ICompiledExportStrategy> >());

            InternalFieldStorage.DecoratorCollectionContainer =
                AddDisposable(configuration.Implementation.Locate <IActivationStrategyCollectionContainer <ICompiledDecoratorStrategy> >());

            if (configuration.AutoRegisterUnknown && Parent == null)
            {
                InternalFieldStorage.MissingExportStrategyProviders =
                    InternalFieldStorage.MissingExportStrategyProviders.Add(
                        configuration.Implementation.Locate <IMissingExportStrategyProvider>());
            }

            if (configuration.SupportFuncType)
            {
                StrategyCollectionContainer.AddStrategy(new FuncTypeStrategy(this));
            }
        }
 /// <summary>
 /// Default constructor
 /// </summary>
 /// <param name="configuration">scope configuration</param>
 /// <param name="builder">activation expression builder</param>
 /// <param name="attributeDiscoveryService">attribute discovery service</param>
 /// <param name="exportExpressionBuilder">expression builder</param>
 /// <param name="injectionContextCreator">injection context creator</param>
 /// <param name="constants">expression constants</param>
 /// <param name="injectionStrategyDelegateCreator">injection strategy creator</param>
 public ActivationStrategyCompiler(IInjectionScopeConfiguration configuration,
                                   IActivationExpressionBuilder builder,
                                   IAttributeDiscoveryService attributeDiscoveryService,
                                   IDefaultStrategyExpressionBuilder exportExpressionBuilder,
                                   IInjectionContextCreator injectionContextCreator,
                                   IExpressionConstants constants,
                                   IInjectionStrategyDelegateCreator injectionStrategyDelegateCreator)
 {
     _configuration                    = configuration;
     _builder                          = builder;
     _attributeDiscoveryService        = attributeDiscoveryService;
     _constants                        = constants;
     _injectionStrategyDelegateCreator = injectionStrategyDelegateCreator;
     _exportExpressionBuilder          = exportExpressionBuilder;
     _injectionContextCreator          = injectionContextCreator;
 }
Example #4
0
        /// <summary>
        /// Configuration object constructor
        /// </summary>
        /// <param name="configuration"></param>
        /// <param name="parent"></param>
        /// <param name="name"></param>
        public InjectionScope(IInjectionScopeConfiguration configuration, IInjectionScope parent, string name) :
            base(parent, name, new ImmutableHashTree <Type, ActivationStrategyDelegate> [configuration.CacheArraySize])
        {
            configuration.SetInjectionScope(this);

            InternalFieldStorage.ScopeConfiguration = configuration;

            InternalFieldStorage.InjectionContextCreator = configuration.Implementation.Locate <IInjectionContextCreator>();

            InternalFieldStorage.CanLocateTypeService = configuration.Implementation.Locate <ICanLocateTypeService>();

            InternalFieldStorage.ActivationStrategyCompiler = configuration.Implementation.Locate <IActivationStrategyCompiler>();

            InternalFieldStorage.StrategyCollectionContainer =
                AddDisposable(configuration.Implementation.Locate <IActivationStrategyCollectionContainer <ICompiledExportStrategy> >());

            InternalFieldStorage.DecoratorCollectionContainer =
                AddDisposable(configuration.Implementation.Locate <IActivationStrategyCollectionContainer <ICompiledDecoratorStrategy> >());

            for (var i = 0; i <= ArrayLengthMinusOne; i++)
            {
                ActivationDelegates[i] = ImmutableHashTree <Type, ActivationStrategyDelegate> .Empty;
            }

            if (configuration.AutoRegisterUnknown && Parent == null)
            {
                InternalFieldStorage.MissingExportStrategyProviders =
                    InternalFieldStorage.MissingExportStrategyProviders.Add(
                        configuration.Implementation.Locate <IMissingExportStrategyProvider>());
            }

            if (configuration.SupportFuncType)
            {
                StrategyCollectionContainer.AddStrategy(new FuncTypeStrategy(this));
            }

            DisposalScopeProvider = configuration.DisposalScopeProvider;

            DisposalScope = DisposalScopeProvider == null ? this : null;
        }
Example #5
0
 /// <summary>
 /// Constructor takes a configuration object
 /// </summary>
 /// <param name="configuration"></param>
 public InjectionScope(IInjectionScopeConfiguration configuration) : this(configuration, null, "RootScope")
 {
 }
Example #6
0
 /// <summary>
 /// Default constructor
 /// </summary>
 /// <param name="configuration"></param>
 /// <param name="builder"></param>
 /// <param name="attributeDiscoveryService"></param>
 /// <param name="exportExpressionBuilder"></param>
 /// <param name="injectionContextCreator"></param>
 /// <param name="constants"></param>
 /// <param name="injectionCreator"></param>
 /// <param name="linqToDynamicMethodConverter"></param>
 public DynamicMethodStrategyCompiler(IInjectionScopeConfiguration configuration, IActivationExpressionBuilder builder, IAttributeDiscoveryService attributeDiscoveryService, IDefaultStrategyExpressionBuilder exportExpressionBuilder, IInjectionContextCreator injectionContextCreator, IExpressionConstants constants, IInjectionStrategyDelegateCreator injectionCreator, ILinqToDynamicMethodConverter linqToDynamicMethodConverter) :
     base(configuration, builder, attributeDiscoveryService, exportExpressionBuilder, injectionContextCreator, constants, injectionCreator)
 {
     _linqToDynamicMethodConverter = linqToDynamicMethodConverter;
 }
Example #7
0
 /// <summary>
 /// Default constructor
 /// </summary>
 /// <param name="configuration"></param>
 public GraceServiceProviderFactory(IInjectionScopeConfiguration configuration)
 {
     _configuration = configuration ?? new InjectionScopeConfiguration();
 }
Example #8
0
 /// <summary>
 /// This should be used for ASP.Net 2.0 - 2.2
 /// </summary>
 /// <param name="builder"></param>
 /// <param name="configuration"></param>
 /// <returns></returns>
 public static IWebHostBuilder UseGrace(this IWebHostBuilder builder,
                                        IInjectionScopeConfiguration configuration = null)
 {
     return(builder.ConfigureServices(c => c.AddSingleton <IServiceProviderFactory <IInjectionScope> >(new GraceServiceProviderFactory(configuration))));
 }
Example #9
0
 /// <summary>
 /// This method is for ASP.Net Core 3.0
 /// </summary>
 /// <param name="builder"></param>
 /// <param name="configuration"></param>
 /// <returns></returns>
 public static IHostBuilder UseGrace(this IHostBuilder builder,
                                     IInjectionScopeConfiguration configuration = null)
 {
     return(builder.UseServiceProviderFactory(new GraceServiceProviderFactory(configuration)));
 }
 /// <summary>
 /// Constructor requiring an injection scope configuration object be provided
 /// </summary>
 /// <param name="configuration">configuration object</param>
 public DependencyInjectionContainer(IInjectionScopeConfiguration configuration) : base(configuration)
 {
 }
Example #11
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="builder"></param>
 /// <param name="configuration"></param>
 public static IWebHostBuilder UseGrace(this IWebHostBuilder builder, IInjectionScopeConfiguration configuration = null)
 {
     return(builder.ConfigureServices(c => c.AddGrace(configuration)));
 }
Example #12
0
 /// <summary>
 /// Add Grace DI container
 /// </summary>
 /// <param name="collection"></param>
 /// <param name="configuration"></param>
 public static IServiceCollection AddGrace(this IServiceCollection collection, IInjectionScopeConfiguration configuration = null)
 {
     return(collection.AddSingleton <IServiceProviderFactory <IInjectionScope> >(new GraceServiceProviderFactory(configuration)));
 }