Зарегистрируйте абстрактный класс с помощью autofac
Я просто запустил этот код в быстро сделанном консольном приложении с добавленной сборкой автофака:
builder.RegisterType<DbConnection>().As<IDbConnection>().WithParameter("connectionString", connectionString);
Не было никаких исключений, хотя DbConnection имеет абстрактный тип.
Действительно ли autofac создает конкретный экземпляр DbConnection, хотя и является абстрактным?
Как это возможно не использовать:
builder.RegisterType (). As (). WithParameter ("connectionString", connectionString);
Должен ли я наследовать от DbConnection и внедрить затем MySqlConnection, унаследованный от DbConnection?
1 ответ
Вы получите исключение только при разрешении. Вам необходимо зарегистрировать конкретные типы, поскольку вы не можете создавать экземпляры абстрактных типов. Итак, как вы сказали, вам нужен неабстрактный тип с открытым конструктором, производным от DbConnection, и зарегистрируйте его как IDbConnection.