c# - 使用 AutoFac 自动绑定(bind)接口(interface)

标签 c# asp.net asp.net-mvc autofac

我有一些类,如 UserQuery、CustomerQuery,分别实现了 IUserQuery、ICustomerQuery 等接口(interface)。在我的绑定(bind)配置中,我需要将每个接口(interface)与相应的查询绑定(bind):

builder.RegisterType<UserQuery>().As<IUserQuery>().InstancePerRequest();
builder.RegisterType<CustomerQuery>().As<ICustomerQuery>().InstancePerRequest();

这工作得很好,但我想知道是否有一种方法可以进行基于约定的绑定(bind)来代替绑定(bind)每个类 XXX[Query] -> [I]XXX[Query]。

我正在使用 AutoFac 作为我的 DI 容器。

最佳答案

我不是 AutoFac 有经验的用户。然而,经过一些研究,成功地测试了下面的代码:

var assembly = Assembly.GetExecutingAssembly();

builder
    .RegisterAssemblyTypes(assembly)
    .AssignableTo<IQuery>()
    .AsImplementedInterfaces()
    .InstancePerRequest();

上面的 IQuery 接口(interface)只是一个标记接口(interface),应该从您拥有的每个查询接口(interface)继承。使用您的示例:

接口(interface)

IUserQuery: IQuery
ICustomerQuery: IQuery

UserQuery: IUserQuery
CustomerQuery: CustomerQuery

关于c# - 使用 AutoFac 自动绑定(bind)接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14603928/

相关文章:

c# - 自定义消息和默认消息

c# - 是否可以在 .NET 4 中动态创建路由?

c# - ASP MVC 和 postgres

javascript - 在企业应用程序框架中包含 js/css 文件的最佳做法是什么?

c# - 将英雄卡列表发送到 Bot Framework 中的附件

c# - 是否可以在 Azure Web 角色中运行 F# WebApi (OWIN) 项目?

c# - 如何防止某些方法的继承?

asp.net - @Html.DropDownList Razor View 中的问题?

c# - Razor - 在 foreach 循环中设置复选框的 ID

c# - 如何将属性标记为 json 不可序列化?