Ninject注入的属性仍然为null



我有一个类,我用它注册为GlobalFilter来处理execpions。我在global.asax上注册,一切都很好
当我的操作中发生异常时,我输入OhException方法并获得NullReference异常,因为LogManager属性为null

为什么inject不注入它?

public class HandleErrorFilterAttribute : HandleErrorAttribute
{
    [Inject]
    public ILogManager LogManager { get; set; }
    public override void OnException(ExceptionContext filterContext)
    {
        LogManager.LogError("Unhandled exception thrown", filterContext.Exception);
        base.OnException(filterContext);
    }
}

这个代码下面的服务注入(我忘了写它)

kernel.Bind<ILogManager>().To<LogManager>();

在那里我创建了对象

    public void RegisterGlobalFilters()
    {
        var handleErrorAttribute = new HandleErrorFilterAttribute();
        GlobalFilters.Filters.Add(handleErrorAttribute);
    }

默认情况下,属性由CLR创建,而不是由DI库创建。DI库只能在它自己创建的对象中注入依赖项,或者当你明确告诉它"构建"这个对象时。因此,如果您自己new up对象或让CLR创建属性,DI库就没有机会向其中注入依赖项。

最新更新