我正在嘗試將業務邏輯實現注入到Web API基礎控制器中。不知何故,基本控制器中的屬性始終爲null
。Autofac惰性屬性注入
另外我該如何做懶惰注射?
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提供程序都無法使用屬性注入 - 因此我的標題編輯。由於標題不正確而拒絕更新爲更準確的標題而降低了問題。 –