Я следую этому руководству Youtube DI для внедрения зависимостей. Это ясная вещь для меня, однако она не показывает, как реализовать в веб-API с использованием n-уровневой архитектуры. Я также добавил, следуя этому руководству: C -Sharp AutoFa c Учебник по веб-API .
Вот как выглядит мой код:
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
...
}
}
}
Это совершенно новый веб Ядро api с 3-х классной библиотекой, делающей многоуровневую архитектуру. Любая помощь будет оценена. Находится ли он в нужном месте для его вызова, мне нужно создать третий класс.
Я также добавил классифицированный Bootstrapper в свою папку app_start и изменил Global.asax, чтобы добавить строку Bootstrapper.Run ( );