C# 在asp.net核心mvc中使用autofac如何使用约定查找和注册组件
如何在.NET core中使用autofac使用约定查找和注册类似的组件C# 在asp.net核心mvc中使用autofac如何使用约定查找和注册组件,c#,asp.net-core-mvc,inversion-of-control,autofac,asp.net-core-1.1,C#,Asp.net Core Mvc,Inversion Of Control,Autofac,Asp.net Core 1.1,如何在.NET core中使用autofac使用约定查找和注册类似的组件 builder.RegisterAssemblyTypes(dataAccess) .Where(t => t.Name.EndsWith("Service")) .AsImplementedInterfaces(); 我找到了builder.RegisterControllers(Assembly.getExecutionGassembly()).Where(t=>t.Name.Sta
builder.RegisterAssemblyTypes(dataAccess)
.Where(t => t.Name.EndsWith("Service"))
.AsImplementedInterfaces();
我找到了builder.RegisterControllers(Assembly.getExecutionGassembly()).Where(t=>t.Name.StartsWith(“Home”)代码>
那不能用。
如何将xxxService注入控制器来看看这个
您只需在autofac容器中注册服务。例如,假设您的服务类型以“服务”结尾,您可以执行以下操作:
builder.RegisterAssemblyTypes(assemblies)
.Where(t => t.Name.EndsWith("Service"))
.AsImplementedInterfaces()
.InstancePerLifetimeScope();
然后使用构造函数注入将服务注入控制器:
public class HomeController
{
private IFooService fooService;
public HomeController(IFooService fooService)
{
this.fooService = fooService
}
}
我相信RegisterController(…)
应该用于ASP.Net的早期版本。谢谢您建议我阅读文档,最后发现我加载了错误的程序集。我发现ASP.NET核心框架现在自动通过服务解析传递所有控制器,因此您不必这样做。RegisterController(…)这在ASP.NET中使用,而不是在ASP.NET核心中使用,谢谢。我删除了Microsoft文档,最后发现我在builder.RegisterAssemblyTypes(assemblies.Where(t=>t.Name.EndsWith(“Service”))中加载了错误的程序集;参数“ssemblies”错误