【发布时间】:2020-05-28 02:18:57
【问题描述】:
我正在关注本教程Youtube DI 进行依赖注入。这对我来说很清楚,但是它没有显示如何使用 n 层架构在 Web API 上实现。我还包括遵循本教程:C-Sharp AutoFac Web API Tutorial。
这是我的代码的样子:
using Autofac;
using System.Linq;
using System.Reflection;
using System.Web.Http;
namespace WebAPI.App_Start
{
public class AutofacWebapiConfig
{
public static IContainer Container;
public static void Initialize(HttpConfiguration config)
{
Initialize(config, RegisterServices(new ContainerBuilder()));
}
public static void Initialize(HttpConfiguration config, IContainer container)
{
config.DependencyResolver = new AutofacWebApiDependencyResolver(container);
}
private static IContainer RegisterServices(ContainerBuilder builder)
{
//Register your Web API controllers.
//builder.RegisterApiControllers(Assembly.GetExecutingAssembly());
builder.RegisterAssemblyTypes(Assembly.Load(nameof(Coordination)))
.Where(t => t.Namespace.Contains("Services"))
.As(t => t.GetInterfaces().FirstOrDefault(i => i.Name == "I" + t.Name));
//Set the dependency resolver to be Autofac.
Container = builder.Build();
return Container;
}
}
}
我在这里遇到的问题是缺少 AutofacWebApiDependencyResolver。
这是我放置代码以调用 AutofacWebapiConfig 类的地方
namespace CB.WebAPI
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
//Dependency Injection
//Configure AutoFac
AutofacWebapiConfig.Initialize(GlobalConfiguration.Configuration);
// Web API routes
...
}
}
}
这是一个全新的 web api 核心,带有 3 个类库,做一个 n 层架构。任何帮助,将不胜感激。是否在正确的位置调用它,我是否需要创建第三个类。
我还在 app_start 文件夹中添加了一个分类引导程序,并修改了 Global.asax 以添加一行 Bootstrapper.Run();
【问题讨论】:
-
您似乎没有使用
Autofac.Integration.WebApinamespace。假设您使用的是 Visual Studio,通常可以突出显示缺少的方法并按 Ctrl+。这将提示您添加缺少的using。在 VS2019 的情况下,如果 NuGet 包丢失,它甚至会经常建议安装。 -
正确我有它,但我删除它,因为它不存在。
-
它似乎是 Autofac.Webapi2 NuGet 包的一部分。
-
谢谢,我安装的是 Autofac 而不是 Autofac.Webapi2
标签: c# dependency-injection autofac autofac-configuration