コード例 #1
0
        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);
        }
コード例 #2
0
 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);
     }
 }
コード例 #3
0
 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()));
 }
コード例 #4
0
 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);
     }
 }
コード例 #5
0
 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>();
 }
コード例 #6
0
 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>();
 }
コード例 #7
0
 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>();
 }
コード例 #8
0
 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>();
 }
コード例 #9
0
 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>();
     });
 }
コード例 #10
0
        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);
            }
        }
コード例 #11
0
 private static void RegisterBasic(IContainerExpression x)
 {
     RegisterDummies(x);
     RegisterStandard(x);
     RegisterComplex(x);
 }
コード例 #12
0
 public void Process(IEnumerable<Type> types, IContainerExpression containerExpression)
 {
     ProcessedTypes = types.ToList();
 }
コード例 #13
0
 private static void RegisterBasic(IContainerExpression x)
 {
     RegisterDummies(x);
     RegisterStandard(x);
     RegisterComplex(x);
 }
コード例 #14
0
 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>();
 }
コード例 #15
0
 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>();
                               });
 }
コード例 #16
0
 private static void RegisterGeneric(IContainerExpression expr)
 {
     expr.For(typeof(IGenericInterface <>)).Use(typeof(GenericExport <>));
     expr.For(typeof(ImportGeneric <>)).Use(typeof(ImportGeneric <>));
 }
コード例 #17
0
 private static void RegisterGeneric(IContainerExpression expr)
 {
     expr.For(typeof(IGenericInterface<>)).Use(typeof(GenericExport<>));
     expr.For(typeof(ImportGeneric<>)).Use(typeof(ImportGeneric<>));
 }
コード例 #18
0
 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>();
 }
コード例 #19
0
 private static void RegisterInterceptor(IContainerExpression expr)
 {
     expr.For<ICalculator>().Use<Calculator>()
          .Proxy(x => x.ProxyGenerator.CreateInterfaceProxyWithTarget<ICalculator>(x.Instance, new MaestroInterceptionLogger()));
 }
コード例 #20
0
 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>();
 }
コード例 #21
0
 private static void RegisterStandard(IContainerExpression expr)
 {
     expr.For<ISingleton>().Use<Singleton>().AsSingleton();
     expr.For<ITransient>().Use<Transient>();
     expr.For<ICombined>().Use<Combined>();
 }
コード例 #22
0
        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);
        }
コード例 #23
0
 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>();
 }