private static void RegisterPropertyInjection(IContainerExpression expr) { expr.For <IServiceA>().Use <ServiceA>().Lifetime.Singleton(); expr.For <IServiceB>().Use <ServiceB>().Lifetime.Singleton(); expr.For <IServiceC>().Use <ServiceC>().Lifetime.Singleton(); expr.For <ISubObjectA>().Use <SubObjectA>().Set(x => x.ServiceA); expr.For <ISubObjectB>().Use <SubObjectB>().Set(x => x.ServiceB); expr.For <ISubObjectC>().Use <SubObjectC>().Set(x => x.ServiceC); expr.For <IComplexPropertyObject1>().Use <ComplexPropertyObject1>() .Set(x => x.ServiceA) .Set(x => x.ServiceB) .Set(x => x.ServiceC) .Set(x => x.SubObjectA) .Set(x => x.SubObjectB) .Set(x => x.SubObjectC); expr.For <IComplexPropertyObject2>().Use <ComplexPropertyObject2>() .Set(x => x.ServiceA) .Set(x => x.ServiceB) .Set(x => x.ServiceC) .Set(x => x.SubObjectA) .Set(x => x.SubObjectB) .Set(x => x.SubObjectC); expr.For <IComplexPropertyObject3>().Use <ComplexPropertyObject3>() .Set(x => x.ServiceA) .Set(x => x.ServiceB) .Set(x => x.ServiceC) .Set(x => x.SubObjectA) .Set(x => x.SubObjectB) .Set(x => x.SubObjectC); }
public void Process(IEnumerable<Type> types, IContainerExpression containerExpression) { foreach (var type in types.Where(x => x.IsConcreteSubClassOf(_baseType))) { var instanceBuilderExpression = containerExpression.For(_baseType).Add(type); _instanceConfiguration(instanceBuilderExpression); } }
private static void RegisterInterceptor(IContainerExpression expr) { expr.For <ICalculator1>().Use <Calculator1>() .Proxy(x => x.ProxyGenerator.CreateInterfaceProxyWithTarget <ICalculator1>(x.Instance, new MaestroInterceptionLogger())); expr.For <ICalculator2>().Use <Calculator2>() .Proxy(x => x.ProxyGenerator.CreateInterfaceProxyWithTarget <ICalculator2>(x.Instance, new MaestroInterceptionLogger())); expr.For <ICalculator3>().Use <Calculator3>() .Proxy(x => x.ProxyGenerator.CreateInterfaceProxyWithTarget <ICalculator3>(x.Instance, new MaestroInterceptionLogger())); }
public void Process(IEnumerable<Type> types, IContainerExpression containerExpression) { foreach (var type in types) { Type genericType; if (!type.IsConcreteClassClosing(_genericTypeDefinition, out genericType)) continue; var instanceBuilderExpression = containerExpression.For(genericType).Add(type); _instanceConfiguration(instanceBuilderExpression); } }
private static void RegisterMultiple(IContainerExpression expr) { expr.For <ISimpleAdapter>().Add <SimpleAdapterOne>(); expr.For <ISimpleAdapter>().Add <SimpleAdapterTwo>(); expr.For <ISimpleAdapter>().Add <SimpleAdapterThree>(); expr.For <ISimpleAdapter>().Add <SimpleAdapterFour>(); expr.For <ISimpleAdapter>().Add <SimpleAdapterFive>(); expr.For <ImportMultiple1>().Use <ImportMultiple1>(); expr.For <ImportMultiple2>().Use <ImportMultiple2>(); expr.For <ImportMultiple3>().Use <ImportMultiple3>(); }
private static void RegisterComplex(IContainerExpression expr) { expr.For <IFirstService>().Use <FirstService>().Lifetime.Singleton(); expr.For <ISecondService>().Use <SecondService>().Lifetime.Singleton(); expr.For <IThirdService>().Use <ThirdService>().Lifetime.Singleton(); expr.For <ISubObjectOne>().Use <SubObjectOne>(); expr.For <ISubObjectTwo>().Use <SubObjectTwo>(); expr.For <ISubObjectThree>().Use <SubObjectThree>(); expr.For <IComplex1>().Use <Complex1>(); expr.For <IComplex2>().Use <Complex2>(); expr.For <IComplex3>().Use <Complex3>(); }
private static void RegisterStandard(IContainerExpression expr) { expr.For <ISingleton1>().Use <Singleton1>().Lifetime.Singleton(); expr.For <ISingleton2>().Use <Singleton2>().Lifetime.Singleton(); expr.For <ISingleton3>().Use <Singleton3>().Lifetime.Singleton(); expr.For <ITransient1>().Use <Transient1>(); expr.For <ITransient2>().Use <Transient2>(); expr.For <ITransient3>().Use <Transient3>(); expr.For <ICombined1>().Use <Combined1>(); expr.For <ICombined2>().Use <Combined2>(); expr.For <ICombined3>().Use <Combined3>(); }
private static void RegisterDummies(IContainerExpression expr) { expr.For <IDummyOne>().Use <DummyOne>(); expr.For <IDummyTwo>().Use <DummyTwo>(); expr.For <IDummyThree>().Use <DummyThree>(); expr.For <IDummyFour>().Use <DummyFour>(); expr.For <IDummyFive>().Use <DummyFive>(); expr.For <IDummySix>().Use <DummySix>(); expr.For <IDummySeven>().Use <DummySeven>(); expr.For <IDummyEight>().Use <DummyEight>(); expr.For <IDummyNine>().Use <DummyNine>(); expr.For <IDummyTen>().Use <DummyTen>(); }
private static void RegisterConditional(IContainerExpression expr) { expr.For <ImportConditionObject1>().Use <ImportConditionObject1>(); expr.For <ImportConditionObject2>().Use <ImportConditionObject2>(); expr.For <ImportConditionObject3>().Use <ImportConditionObject3>(); expr.For <IExportConditionInterface>() .Use(x => { x.If(ctx => ctx.TypeStack.Root == typeof(ImportConditionObject1)) .Use <ExportConditionalObject>(); x.If(ctx => ctx.TypeStack.Root == typeof(ImportConditionObject2)) .Use <ExportConditionalObject2>(); x.If(ctx => ctx.TypeStack.Root == typeof(ImportConditionObject3)) .Use <ExportConditionalObject3>(); }); }
public void Process(IEnumerable<Type> types, IContainerExpression containerExpression) { types = types as IList<Type> ?? types.ToList(); var interfaces = types.Where(x => x.IsInterface); var classes = types.Where(x => x.IsConcreteClass()).GroupBy(x => x.Namespace ?? string.Empty).ToDictionary(x => x.Key, x => x.ToList()); foreach (var @interface in interfaces) { List<Type> list; if (!classes.TryGetValue(@interface.Namespace ?? string.Empty, out list)) continue; var @class = list.SingleOrDefault(x => x.Name == @interface.Name.Substring(1)); if (@class == null) continue; var instanceBuilderExpression = containerExpression.For(@interface).Use(@class); _instanceConfiguration(instanceBuilderExpression); } }
private static void RegisterBasic(IContainerExpression x) { RegisterDummies(x); RegisterStandard(x); RegisterComplex(x); }
public void Process(IEnumerable<Type> types, IContainerExpression containerExpression) { ProcessedTypes = types.ToList(); }
private static void RegisterComplex(IContainerExpression expr) { expr.For<IFirstService>().Use<FirstService>().AsSingleton(); expr.For<ISecondService>().Use<SecondService>().AsSingleton(); expr.For<IThirdService>().Use<ThirdService>().AsSingleton(); expr.For<ISubObjectOne>().Use<SubObjectOne>(); expr.For<ISubObjectTwo>().Use<SubObjectTwo>(); expr.For<ISubObjectThree>().Use<SubObjectThree>(); expr.For<IComplex>().Use<Complex>(); }
private static void RegisterConditional(IContainerExpression expr) { expr.For<ImportConditionObject>().Use<ImportConditionObject>(); expr.For<ImportConditionObject2>().Use<ImportConditionObject2>(); expr.For<IExportConditionInterface>() .UseConditional(x => { x.If(ctx => ctx.TypeStack.Root == typeof(ImportConditionObject)) .Use<ExportConditionalObject>(); x.If(ctx => ctx.TypeStack.Root == typeof(ImportConditionObject2)) .Use<ExportConditionalObject2>(); }); }
private static void RegisterGeneric(IContainerExpression expr) { expr.For(typeof(IGenericInterface <>)).Use(typeof(GenericExport <>)); expr.For(typeof(ImportGeneric <>)).Use(typeof(ImportGeneric <>)); }
private static void RegisterGeneric(IContainerExpression expr) { expr.For(typeof(IGenericInterface<>)).Use(typeof(GenericExport<>)); expr.For(typeof(ImportGeneric<>)).Use(typeof(ImportGeneric<>)); }
private static void RegisterDummies(IContainerExpression expr) { expr.For<IDummyOne>().Use<DummyOne>(); expr.For<IDummyTwo>().Use<DummyTwo>(); expr.For<IDummyThree>().Use<DummyThree>(); expr.For<IDummyFour>().Use<DummyFour>(); expr.For<IDummyFive>().Use<DummyFive>(); expr.For<IDummySix>().Use<DummySix>(); expr.For<IDummySeven>().Use<DummySeven>(); expr.For<IDummyEight>().Use<DummyEight>(); expr.For<IDummyNine>().Use<DummyNine>(); expr.For<IDummyTen>().Use<DummyTen>(); }
private static void RegisterInterceptor(IContainerExpression expr) { expr.For<ICalculator>().Use<Calculator>() .Proxy(x => x.ProxyGenerator.CreateInterfaceProxyWithTarget<ICalculator>(x.Instance, new MaestroInterceptionLogger())); }
private static void RegisterStandard(IContainerExpression expr) { expr.For<ISingleton1>().Use<Singleton1>().Lifetime.Singleton(); expr.For<ISingleton2>().Use<Singleton2>().Lifetime.Singleton(); expr.For<ISingleton3>().Use<Singleton3>().Lifetime.Singleton(); expr.For<ITransient1>().Use<Transient1>(); expr.For<ITransient2>().Use<Transient2>(); expr.For<ITransient3>().Use<Transient3>(); expr.For<ICombined1>().Use<Combined1>(); expr.For<ICombined2>().Use<Combined2>(); expr.For<ICombined3>().Use<Combined3>(); }
private static void RegisterStandard(IContainerExpression expr) { expr.For<ISingleton>().Use<Singleton>().AsSingleton(); expr.For<ITransient>().Use<Transient>(); expr.For<ICombined>().Use<Combined>(); }
private static void RegisterPropertyInjection(IContainerExpression expr) { expr.For<IServiceA>().Use<ServiceA>().AsSingleton(); expr.For<IServiceB>().Use<ServiceB>().AsSingleton(); expr.For<IServiceC>().Use<ServiceC>().AsSingleton(); expr.For<ISubObjectA>().Use<SubObjectA>().Set(x => x.ServiceA); expr.For<ISubObjectB>().Use<SubObjectB>().Set(x => x.ServiceB); expr.For<ISubObjectC>().Use<SubObjectC>().Set(x => x.ServiceC); expr.For<IComplexPropertyObject>().Use<ComplexPropertyObject>() .Set(x => x.ServiceA) .Set(x => x.ServiceB) .Set(x => x.ServiceC) .Set(x => x.SubObjectA) .Set(x => x.SubObjectB) .Set(x => x.SubObjectC); }
private static void RegisterMultiple(IContainerExpression expr) { expr.Add<ISimpleAdapter>().Use<SimpleAdapterOne>(); expr.Add<ISimpleAdapter>().Use<SimpleAdapterTwo>(); expr.Add<ISimpleAdapter>().Use<SimpleAdapterThree>(); expr.Add<ISimpleAdapter>().Use<SimpleAdapterFour>(); expr.Add<ISimpleAdapter>().Use<SimpleAdapterFive>(); expr.For<ImportMultiple>().Use<ImportMultiple>(); }