Domanda semplice, immagino, ma ho passato un'ora a cercare di ottenere una classe base per i miei controller in modo da avere alcuni servizi iniettati tramite l'iniezione di proprietà. Inizialmente le proprietà erano protette con scope, ma gli oggetti continuavano a tornare nulli, una volta modificato l'ambito su public funzionava. Esiste comunque la possibilità di proteggere le proprietà e far funzionare l'IoC?Perché Ninject non risolve le proprietà protette in una classe base?
Ecco il mio setup.
public class BaseController : Controller
{
[Inject]
protected LoggingInterface.ILogger<BaseController> Logger { set; get; }
[Inject]
protected IRepository Repository { set; get; }
protected override void OnAuthorization(AuthorizationContext filterContext)
{
....
base.OnAuthorization(filterContext);
}
}
e il boot-strapper nel NinjectMVC3 App_Start
private static void RegisterServices(IKernel kernel)
{
kernel.Bind(typeof(LoggingInterface.ILogger<>)).To(typeof(Log4NetLogger<>));
kernel.Bind<IRepository>().To<Repository>();
kernel.Bind<IUserService>().To<UserService>();
}
Grazie, Stephen
Grazie Darin, questo è quello che ho concluso solo per scherzarci. La ragione convincente per le proprietà è che i discendenti si fanno prendere dall'iniezione di ctor. Stai attento. –