Hello,
I'm writing a plugin that uses web api controller (for kendo ui databinding).
Can anyone provide me an example of how to use dependency injection (autofac) to inject NopCommerce service interface into Web Api Controller constructor?
Thanks.
public static void Register(HttpConfiguration config)
{
// Route for POST method
config.Routes.MapHttpRoute(
name: "DefaultApi2",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
// Route GET method
config.Routes.MapHttpRoute(
name: "DefaultApi1",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { action = "get", id = RouteParameter.Optional }
);
}
var builder = new ContainerBuilder();
builder.RegisterApiControllers(Assembly.GetExecutingAssembly());
// We have to register services specifically for the API calls!
builder.RegisterType<BlogService>()
.AsImplementedInterfaces().InstancePerLifetimeScope();
private void InitializeContainer(ContainerConfigurer configurer, EventBroker broker, NopConfig config)
{
var builder = new ContainerBuilder();
var container = builder.Build();
_containerManager = new ContainerManager(container);
configurer.Configure(this, _containerManager, broker, config, container);
}
var webApiResolver = new AutofacWebApiDependencyResolver(container);
GlobalConfiguration.Configuration.DependencyResolver = webApiResolver;
var assemblies = typeFinder.GetAssemblies().ToArray();
builder.RegisterControllers(assemblies);
builder.RegisterApiControllers(assemblies);