J'ai un attribut de méthode qui prévoit plusieurs propriétés à injecter par Ninject 2, mais userSession
et jobRepository
arrivent comme nuls:Ninject 2 Injection propriété pour ActionFilterAttribute ne fonctionne pas
[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);
}
}
Et est la méthode ici le contrôleur:
[AcceptGet, Job]
public ActionResult Dimensions(Job job) {
return View(job.Building);
}
Je sais que j'ai la configuration de travail parce que si j'utilise l'injection de constructeur sur le contrôleur s'injecte des paramètres du contrôleur. Cela ne m'aide pas beaucoup pour les attributs mais qui ont besoin d'utiliser l'injection de propriété. Est-ce que j'ai râté quelque chose?
Voici les potions pertinentes de 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>();
}
}
C'est tout! Les propriétés doivent avoir un paramètre public à injecter par Ninject. Je n'aurais pas pensé que cela aurait de l'importance. – DavGarcia
Merci pour cette réponse - je cherchais partout la solution à ce problème précis. – Mustafakidd