用 autofac 注册抽象类

Posted

技术标签:

【中文标题】用 autofac 注册抽象类【英文标题】:Register abstract class with autofac 【发布时间】:2014-01-17 21:20:45 【问题描述】:

我只是在添加了 autofac 程序集的快速制作的控制台应用程序中运行此代码:

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

虽然 DbConnection 是抽象类型,但也不例外。

autofac 是否真的创建了 DbConnection 的具体实例,尽管它是抽象的?

怎么可能不用:

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

我是否必须从 DbConnection 继承并注入然后从 DbConnection 继承的 mysqlConnection?

【问题讨论】:

【参考方案1】:

您只会在分辨率上得到例外。您确实需要注册具体类型,因为您无法实例化抽象类型。因此,正如您所说,您需要一个具有从 DbConnection 派生的公共构造函数的非抽象类型,并将其注册为 IDbConnection。

【讨论】:

以上是关于用 autofac 注册抽象类的主要内容,如果未能解决你的问题,请参考以下文章

[Asp.Net Core]Autofac抽象多实现的问题

[Asp.Net Core]Autofac单抽象多实例属性注入

[Asp.Net Core]Autofac单抽象多实例属性注入

[Asp.Net Core]Autofac单抽象多实现构造函数注入

[Asp.Net Core]Autofac单抽象多实现构造函数注入

Autofac和nopcommerce中的Autofac, 还有反射