簡體   English   中英

Ninject 2屬性注入ActionFilterAttribute不起作用

[英]Ninject 2 Property Injection for ActionFilterAttribute not working

我有一個方法屬性,它期望Ninject 2注入幾個屬性,但userSessionjobRepository會出現為null:

[AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
public class JobAttribute : ActionFilterAttribute {
    [Inject]
    private IUserSession userSession;

    [Inject]
    private IJobRepository jobRepository;

    public override void OnActionExecuting(ActionExecutingContext filterContext) {
        var filter = new JobFilter(userSession, jobRepository);

        filter.OnActionExecuting(filterContext);
    }
}

這是控制器中的方法:

[AcceptGet, Job]
public ActionResult Dimensions(Job job) {
    return View(job.Building);
}

我知道我的設置有效,因為如果我在控制器上使用構造函數注入,則會注入控制器的參數。 雖然需要使用屬性注入,但這對屬性沒有多大幫助。 我在這里錯過了什么嗎?

以下是Global.asax.cs的相關部分:

public class MvcApplication : Ninject.Web.Mvc.NinjectHttpApplication {
    protected override void OnApplicationStarted() {
        RegisterRoutes(RouteTable.Routes);
        RegisterAllControllersIn(Assembly.GetExecutingAssembly());
    }

    ...snip...

    protected override IKernel CreateKernel() {
        return new StandardKernel(
            new RepositoryConfiguration(),
            new AuthenticationModule(),
            new AutoMapperConfiguration()
        );
    }
}

public class RepositoryConfiguration : NinjectModule {
    public override void Load() {
        Bind<ICustomerRepository>().To<CustomerRepository>();
        Bind<IJobRepository>().To<JobRepository>();
    }
}

public class AuthenticationModule : NinjectModule {
    public override void Load() {
        Bind<MbdQuote.Core.AppService.IUserSession>().To<UserSession>();
    }
}

Ninject2不進行字段注入,使用公共setter將它們更改為屬性。

class JobAttribute : ActionFilterAttribute {
    [Inject]
    public IUserSession UserSession
    { set; private get; }

    [Inject]
    public IJobRepository JobRepository
    { set; private get; }
}

來自Ninject 2 Beta 公告

Ninject 1.x中沒有出現在Ninject 2中的東西:

  • 現場注入:Ninject 2的注入現在由表達式樹驅動,而在.NET 3.5中,無法使用表達式樹設置字段值。 因為這是一個不好的做法,我決定削減它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM