Зарегистрируйте абстрактный класс с помощью autofac

Я просто запустил этот код в быстро сделанном консольном приложении с добавленной сборкой автофака:

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

Не было никаких исключений, хотя DbConnection имеет абстрактный тип.

Действительно ли autofac создает конкретный экземпляр DbConnection, хотя и является абстрактным?

Как это возможно не использовать:

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

Должен ли я наследовать от DbConnection и внедрить затем MySqlConnection, унаследованный от DbConnection?

1 ответ

Решение

Вы получите исключение только при разрешении. Вам необходимо зарегистрировать конкретные типы, поскольку вы не можете создавать экземпляры абстрактных типов. Итак, как вы сказали, вам нужен неабстрактный тип с открытым конструктором, производным от DbConnection, и зарегистрируйте его как IDbConnection.

Другие вопросы по тегам