【发布时间】:2017-01-26 03:41:13
【问题描述】:
我正在尝试将业务逻辑实现注入 Web API 基本控制器。不知何故,基本控制器中的属性总是null。
还有怎么做惰性注入?
Startups.cs
public IServiceProvider ConfigureServices(IServiceCollection services)
{
// Add framework services.
services.AddMvc();
var containerBuilder = new ContainerBuilder();
containerBuilder.RegisterType<ViewBusinessLogic>().As<IViewBusinessLogic>().
PropertiesAutowired();
containerBuilder.Populate(services);
var container = containerBuilder.Build();
return container.Resolve<IServiceProvider>();
}
接口、实现和基本控制器:
public interface IViewBusinessLogic
{
IEnumerable<dynamic> GetView(Guid viewId);
}
public class ViewBusinessLogic : BusinessLogic, IViewBusinessLogic
{
public IEnumerable<dynamic> GetView(Guid viewId)
{
return new List<dynamic>
{
new { Test = "Test1" },
new { Test = "Test2" }
};
}
}
public abstract class BaseController : Controller
{
public IViewBusinessLogic ViewBusinessLogic { get; }
}
【问题讨论】:
-
这不是 Autofac 问题,而是 ASP.NET Core 问题。 如果没有
AddControllersAsServices,属性注入在任何其他 DI 提供程序中都不起作用 - 因此我的标题编辑。由于标题不正确和拒绝更新为更准确的标题而被否决的问题。
标签: asp.net dependency-injection asp.net-core autofac