/// <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>())); }
/// <summary> /// default constructor /// </summary> public InjectionScopeConfiguration(ImplementationFactory implementationFactory = null) { Implementation = implementationFactory ?? DefaultImplementation.Clone(); Behaviors = new ExportCompilationBehavior(); CacheArraySize = 64; ExportStrategyArraySize = 16; AutoRegisterUnknown = true; ExportAsBase = false; TrackDisposableTransients = true; SupportFuncType = true; ExportByInterfaceFilter = DefaultInterfaceFilter; }