Ejemplo n.º 1
0
        /// <summary>
        /// Static constructor to setup dynamic implementation
        /// </summary>
        static GraceDynamicMethod()
        {
            DynamicImplementation = DefaultImplementation.Clone();

            DynamicImplementation.ExportSingleton <IDynamicMethodTargetCreator>(f => new DynamicMethodTargetCreator());
            DynamicImplementation.ExportSingleton <INewExpressionGenerator>(f => new NewExpressionGenerator());
            DynamicImplementation.ExportSingleton <IConstantExpressionCollector>(f => new ConstantExpressionCollector());
            DynamicImplementation.ExportSingleton <IConstantExpressionGenerator>(f => new ConstantExpressionGenerator());
            DynamicImplementation.ExportSingleton <IMemeberInitExpressionGenerator>(f => new MemeberInitExpressionGenerator());
            DynamicImplementation.ExportSingleton <IArrayInitExpressionGenerator>(f => new ArrayInitExpressionGenerator());
            DynamicImplementation.ExportSingleton <IParameterExpressionGenerator>(f => new ParameterExpressionGenerator());
            DynamicImplementation.ExportSingleton <ICallExpressionGenerator>(f => new CallExpressionGenerator());
            DynamicImplementation.ExportSingleton <IAssignExpressionGenerator>(f => new AssignExpressionGenerator());

            DynamicImplementation.ExportInstance <ILinqToDynamicMethodConverter>(f => new LinqToDynamicMethodConverter(f));

            DynamicImplementation.ExportInstance <IActivationStrategyCompiler>(
                f => new DynamicMethodStrategyCompiler(f.InjectionScope.ScopeConfiguration,
                                                       f.Locate <IActivationExpressionBuilder>(),
                                                       f.Locate <IAttributeDiscoveryService>(),
                                                       f.Locate <IDefaultStrategyExpressionBuilder>(),
                                                       f.Locate <IInjectionContextCreator>(),
                                                       f.Locate <IExpressionConstants>(),
                                                       f.Locate <IInjectionStrategyDelegateCreator>(),
                                                       f.Locate <ILinqToDynamicMethodConverter>()));
        }
Ejemplo n.º 2
0
        /// <summary>
        /// static constructor that sets up a default implementation for the DI container
        /// </summary>
        static InjectionScopeConfiguration()
        {
            DefaultImplementation = new ImplementationFactory();

            DefaultImplementation.ExportSingleton <IAttributeDiscoveryService>(f => new AttributeDiscoveryService());

            DefaultImplementation.ExportInstance <IActivationStrategyCollectionContainer <ICompiledExportStrategy> >(
                f => new ActivationStrategyCollectionContainer <ICompiledExportStrategy>(f.InjectionScope.ScopeConfiguration.ExportStrategyArraySize, f.InjectionScope.ScopeConfiguration.ExportAsBase));

            DefaultImplementation.ExportInstance <IActivationStrategyCollectionContainer <ICompiledWrapperStrategy> >(
                f => new ActivationStrategyCollectionContainer <ICompiledWrapperStrategy>(f.InjectionScope.ScopeConfiguration.ExportStrategyArraySize, f.InjectionScope.ScopeConfiguration.ExportAsBase));

            DefaultImplementation.ExportInstance <IActivationStrategyCollectionContainer <ICompiledDecoratorStrategy> >(
                f => new ActivationStrategyCollectionContainer <ICompiledDecoratorStrategy>(f.InjectionScope.ScopeConfiguration.ExportStrategyArraySize, f.InjectionScope.ScopeConfiguration.ExportAsBase));

            DefaultImplementation.ExportInstance <IActivationStrategyCompiler>(
                f => new ActivationStrategyCompiler(f.InjectionScope.ScopeConfiguration,
                                                    f.Locate <IActivationExpressionBuilder>(),
                                                    f.Locate <IAttributeDiscoveryService>(),
                                                    f.Locate <IDefaultStrategyExpressionBuilder>(),
                                                    f.Locate <IInjectionContextCreator>(),
                                                    f.Locate <IExpressionConstants>(),
                                                    f.Locate <IInjectionStrategyDelegateCreator>()));

            DefaultImplementation.ExportInstance <ICanLocateTypeService>(f => new CanLocateTypeService());

            DefaultImplementation.ExportInstance <IExportRegistrationBlockValueProvider>(
                f => new ExportRegistrationBlock(f.InjectionScope, f.Locate <IActivationStrategyCreator>()));

            DefaultImplementation.ExportInstance <IActivationStrategyCreator>(
                f => new ActivationStrategyProvider(f.InjectionScope, f.Locate <IDefaultStrategyExpressionBuilder>()));

            DefaultImplementation.ExportInstance <IDefaultStrategyExpressionBuilder>(
                f => new DefaultStrategyExpressionBuilder(f.Locate <ITypeExpressionBuilder>()));

            DefaultImplementation.ExportInstance <ITypeExpressionBuilder>(
                f => new TypeExpressionBuilder(f.Locate <IInstantiationExpressionCreator>(),
                                               f.Locate <IDisposalScopeExpressionCreator>(),
                                               f.Locate <IMemberInjectionExpressionCreator>(),
                                               f.Locate <IMethodInvokeExpressionCreator>(),
                                               f.Locate <IEnrichmentExpressionCreator>()));

            DefaultImplementation.ExportSingleton <IInstantiationExpressionCreator>(f => new InstantiationExpressionCreator());
            DefaultImplementation.ExportInstance <IDisposalScopeExpressionCreator>(f => new DisposalScopeExpressionCreator());
            DefaultImplementation.ExportInstance <IEnrichmentExpressionCreator>(f => new EnrichmentExpressionCreator());
            DefaultImplementation.ExportInstance <IMethodInvokeExpressionCreator>(f => new MethodInvokeExpressionCreator());
            DefaultImplementation.ExportInstance <IMemberInjectionExpressionCreator>(f => new MemberInjectionExpressionCreator());

            DefaultImplementation.ExportInstance <IActivationExpressionBuilder>(
                f => new ActivationExpressionBuilder(f.Locate <IArrayExpressionCreator>(),
                                                     f.Locate <IEnumerableExpressionCreator>(),
                                                     f.Locate <IWrapperExpressionCreator>(),
                                                     f.Locate <IInjectionContextValueProvider>()));

            DefaultImplementation.ExportInstance <IArrayExpressionCreator>(
                f => new ArrayExpressionCreator(f.Locate <IWrapperExpressionCreator>()));

            DefaultImplementation.ExportInstance <IEnumerableExpressionCreator>(
                f => new EnumerableExpressionCreator());

            DefaultImplementation.ExportInstance <IWrapperExpressionCreator>(
                f => new WrapperExpressionCreator());

            DefaultImplementation.ExportInstance(f => ExpressionConstants.Default);

            DefaultImplementation.ExportInstance <IMissingExportStrategyProvider>(
                f => new ConcreteExportStrategyProvider());

            DefaultImplementation.ExportInstance <IDefaultWrapperCollectionProvider>(
                f => new DefaultWrapperCollectionProvider());

            DefaultImplementation.ExportInstance <IInjectionContextCreator>(f => new InjectionContextCreator());
            DefaultImplementation.ExportInstance <IInjectionContextValueProvider>(f => new InjectionContextValueProvider());

            DefaultImplementation.ExportInstance <IActivationStrategyAttributeProcessor>(f => new ActivationStrategyAttributeProcessor());

            DefaultImplementation.ExportInstance <IDynamicArrayLocator>(f => new DynamicArrayLocator());
            DefaultImplementation.ExportInstance <IDynamicIEnumerableLocator>(f => new DynamicIEnumerableLocator());

            DefaultImplementation.ExportInstance <IInjectionStrategyDelegateCreator>(f => new InjectionStrategyDelegateCreator());

            DefaultImplementation.ExportInstance <IStrongMetadataInstanceProvider>(f => new StrongMetadataInstanceProvider());
        }