Registering a specific type with a parameter is null using Autofac

I have the following class:

public class Errors { private readonly string _connectionString; public Errors(string connectionString) { _connectionString = connectionString; } } 

I am trying to register using Autofac like this:

 builder.RegisterType<Errors>().WithParameter("connectionString", System.Configuration.ConfigurationManager.ConnectionStrings["myConn"].ConnectionString); 

This object is entered into another object, but it is always zero. Further, in case of an exception, the following error message is displayed:

 Cannot choose between multiple constructors with equal length 1 on type 'System.String'. Select the constructor explicitly, with the UsingConstructor() configuration method, when the component is registered. 

I tried registering with UseConstructor and WithParameter, and no changes occurred.

+4
source share
1 answer

Try It. There are 2 ways to register.

First type :

 builder.Register(c => new Errors(System.Configuration.ConfigurationManager.ConnectionStrings["myConn"].ConnectionString)).InstancePerLifetimeScope(); 

Second type :

 public class Errors { private string _connectionString{ get; set; } public Errors(string connectionString) { _connectionString = connectionString; } } 

Register as below

 builder.RegisterType<Errors>().WithParameter("connectionString", System.Configuration.ConfigurationManager.ConnectionStrings["myConn"].ConnectionString); 

EDIT : Testing

 class Program { static void Main(string[] args) { var builder = new ContainerBuilder(); builder.Register(c => new Errors(ConfigurationManager.ConnectionStrings["myConn"].ConnectionString)).InstancePerLifetimeScope(); // Type 1 // builder.RegisterType<Errors>().WithParameter("connectionString", ConfigurationManager.ConnectionStrings["myConn"].ConnectionString); // Type 2 var container = builder.Build(); var objErrors = container.Resolve<Errors>(); } } 

And the configuration file looks like

  <connectionStrings> <add name="myConn" connectionString="Some Connection String"/> </connectionStrings> 

Read this Autofac Wiki

Tested in Autofac Version: 2.6.1.841

Result : Result

+4
source

Source: https://habr.com/ru/post/1444428/


All Articles