I just run this code in a quickly made console app with autofac assembly added:

builder.RegisterType<DbConnection>().As<IDbConnection>().WithParameter("connectionString", connectionString);

There was no exception although DbConnection is of abstract type.

Does autofac really create a concrete instance of DbConnection although its abstract?

How is that possible not to use:

builder.RegisterType().As().WithParameter("connectionString", connectionString);

Do I have to inherit from DbConnection and inject then MySqlConnection inherited from DbConnection?

有帮助吗?

解决方案

You would only get the exception on resolution. You do need to register concrete types since you can't instantiate abstract types. So, as you said, you'd need a non-abstract type with a public constructor derived from DbConnection and register that as IDbConnection.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top