我正在按照本教程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文件夹中添加了一个分类的Bootstrapper,并修改了Global.asax以添加一行Bootstrapper.Run();
在注释中,您说过尝试为它添加using指令时,名称空间AutofacWebApiDependencyResolver不属于(Autofac.Integration.WebApi)。
看来您的项目没有安装Autofac.Webapi2 NuGet软件包。
使用Visual Studio安装它:
或者,在Visual Studio 2019中,您可以通过以下简单过程安装它: