Esempio n. 1
0
        /// <summary>
        /// http://autofac.readthedocs.io/en/latest/register/parameters.html
        /// </summary>
        private static void ReflectionComponentRegistration()
        {
            Console.WriteLine("\nReflectionComponentRegistration:\n");
            ContainerBuilder builder = new ContainerBuilder();

            // Using a NAMED parameter:
            builder.RegisterType <ConfigReader>()
            .As <IConfigReader>()
            .WithParameter("configSectionName", "sectionName");

            // Using a TYPED parameter:
            builder.RegisterType <ConfigReader>()
            .As <IConfigReader>()
            .WithParameter(new TypedParameter(typeof(string), "sectionName"));

            // Using a RESOLVED parameter:
            builder.RegisterType <ConfigReader>()
            .As <IConfigReader>()
            .WithParameter(
                new ResolvedParameter(
                    (pi, ctx) => pi.ParameterType == typeof(string) && pi.Name == "configSectionName",
                    (pi, ctx) => "sectionName"));

            IContainer container = builder.Build();

            using (ILifetimeScope lifetimeScope = container.BeginLifetimeScope())
            {
                IConfigReader configReader = lifetimeScope.Resolve <IConfigReader>(new NamedParameter("sectionName", "ASection"));
                Console.WriteLine("configReader.GetType(): " + configReader.GetType());
            }
        }
Esempio n. 2
0
        private static void ParameterswithLambdaExpression()
        {
            Console.WriteLine("\nParameterswithLambdaExpression:\n");
            ContainerBuilder builder = new ContainerBuilder();

            // Use TWO parameters to the registration delegate:
            // c = The current IComponentContext to dynamically resolve dependencies
            // p = An IEnumerable<Parameter> with the incoming parameter set
            builder.Register((c, p) => new ConfigReader2(p.Named <string>("configSectionName"))).As <IConfigReader>();
            IContainer container = builder.Build();

            using (ILifetimeScope lifetimeScope = container.BeginLifetimeScope())
            {
                IConfigReader configReader = lifetimeScope.Resolve <IConfigReader>(new NamedParameter("configSectionName", "ASection"));
                Console.WriteLine("configReader.GetType(): " + configReader.GetType());
            }
        }