7
我已經通過Ninject 2被注入其中預計幾個屬性的方法屬性,但userSession
和jobRepository
都上來爲空:Ninject 2房產注射液ActionFilterAttribute不工作
[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>();
}
}
就是這樣!這些屬性必須有一個公共setter才能被Ninject注入。我不會認爲這很重要。 – DavGarcia 2010-02-15 23:17:41
感謝這個答案 - 我到處尋找解決這個問題的方法。 – Mustafakidd 2011-02-28 06:43:44