属性 注入的 Ninject 仍然是 null

Property injected by Ninject is still null

我有 class,我用它注册为 GlobalFilter 来处理 execpions。我在global.asax上注册了,那里一切正常。
当我的操作发生异常时,我进入 OhException 方法并得到 NullReference 异常,因为 LogManager 属性 为空。

为什么 nInject 没有'不注射吗?

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 库只能在它自己创建的对象中注入依赖项,或者当您明确告诉它 'build up' 这个对象时。因此,如果您 new 自己创建对象或让 CLR 创建属性,DI 库就没有机会向其中注入依赖项。