To proste pytanie, ale spędziłem godzinę próbując uzyskać klasę podstawową dla moich kontrolerów, aby mieć kilka usług wstrzykniętych za pomocą wtrysku własności. Na początku właściwości były chronione, ale obiekty wracały null, kiedy zmieniłem zakres na publiczny, zadziałało. Czy mimo to należy zabezpieczyć właściwości i uruchomić IoC?Dlaczego Ninject nie naprawi zabezpieczonych właściwości w klasie bazowej?
Oto moja konfiguracja.
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);
}
}
a boot-byczek w 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>();
}
Dziękuję Stephen
Dzięki Darin, właśnie to zawarłem, bawiąc się z tym. Najważniejszym powodem dla właściwości jest to, że potomkowie są w pewien sposób sfałszowani zastrzykiem ctor. Dbać. –