Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在asp.net核心mvc中使用autofac如何使用约定查找和注册组件_C#_Asp.net Core Mvc_Inversion Of Control_Autofac_Asp.net Core 1.1 - Fatal编程技术网

C# 在asp.net核心mvc中使用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

如何在.NET core中使用autofac使用约定查找和注册类似的组件

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”错误