/// <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()); } }
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()); } }