[英]Autofac property Injection in base controller
我有基本的controllerer,我尝试进行属性注入,但是不起作用...
public class BaseController : Controller
{
public ILoggingService loggingService { get; set; }
public BaseController()
{
}
}
这是我的Autofac配置...
var builder = new ContainerBuilder();
// builder.Register(c => new BaseController { loggingService = c.Resolve<ILoggingService>() });
builder.RegisterControllers(Assembly.GetExecutingAssembly())
.PropertiesAutowired();
builder.Register(c => new BaseController()).OnActivated(e =>
{
e.Instance.loggingService = e.Context.Resolve<ILoggingService>();
});
builder.RegisterAssemblyTypes(Assembly.Load("Aizen.Services"))
.Where(t => t.Name.EndsWith("Service"))
.AsImplementedInterfaces()
.InstancePerRequest();
您尚未为ILoggingService
接口注册具体类型。 否则,Autofac将不知道将属性设置为实际需要的内容。
添加如下内容(当然替换为真实对象):
builder.RegisterType<YourLoggingServiceGoesHere>().As<ILoggingService>();
您可以尝试以下解决方案:
builder.Register(c => new BaseController { loggingService = c.Resolve<ILoggingService>() });
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.