Exemple #1
0
        public void OverridesMustBeAppliedByProxy(string name)
        {
            var containerBuilder = new ContainerBuilder();

            containerBuilder.RegisterType <Service2>().As <IService2>();
            containerBuilder.RegisterLazy <IServiceToTestOverrides, ServiceToTestOverrides>(name);

            using (var container = containerBuilder.Build())
            {
                const ServiceToTestOverrides.SomeEnum enumValue = ServiceToTestOverrides.SomeEnum.Value2;
                const string stringValue = nameof(stringValue);
                const string arg         = nameof(arg);

                var parameters = new Parameter[]
                {
                    new NamedParameter("someEnum", enumValue),
                    new ResolvedParameter(
                        (p, c) => p.ParameterType == typeof(IService2),
                        (p, c) => new OtherService2()),
                    new TypedParameter(
                        typeof(ServiceToTestOverrides.Argument),
                        new ServiceToTestOverrides.Argument(stringValue))
                };

                var service = name == null
                    ? container.Resolve <IServiceToTestOverrides>(parameters)
                    : container.ResolveNamed <IServiceToTestOverrides>(name, parameters);

                var result = service.Method(arg);

                Assert.Equal($"{enumValue}_{Service2ExMethodValue}{arg}_{stringValue}", result);
            }
        }
        public void OverridesMustBeAppliedByProxy(string name)
        {
            using (var container = new UnityContainer()
                                   .RegisterLazy <IServiceToTestOverrides, ServiceToTestOverrides>(name)
                                   .RegisterType <IService2, Service2>())
            {
                const ServiceToTestOverrides.SomeEnum enumValue = ServiceToTestOverrides.SomeEnum.Value2;
                const string stringValue = nameof(stringValue);
                const string arg         = nameof(arg);

                var service = container.Resolve <IServiceToTestOverrides>(name,
                                                                          new ParameterOverride("someEnum", enumValue),
                                                                          new DependencyOverride(typeof(IService2), new OtherService2()),
#pragma warning disable 618
                                                                          new TypeBasedOverride(typeof(ServiceToTestOverrides.Argument),
#pragma warning restore 618
                                                                                                new ParameterOverride("value", stringValue)));

                var result = service.Method(arg);

                Assert.Equal($"{enumValue}_{Service2ExMethodValue}{arg}_{stringValue}", result);
            }
        }