繁体   English   中英

基本控制器中的Autofac属性注入

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM