Einfache Frage, denke ich, aber ich habe eine Stunde damit verbracht, eine Basisklasse für meine Controller zu erstellen, um ein paar Dienste über die property injection bereitzustellen. Zuerst waren die Eigenschaften als geschützt deklariert, aber die Objekte kamen immer als null zurück. Sobald ich den Bereich auf öffentlich geändert habe, hat es funktioniert. Gibt es eine Möglichkeit, die Eigenschaften als geschützt zu belassen und das IoC zum Laufen zu bringen?
Hier ist meine Setup.
public class BaseController : Controller
{
[Inject]
protected LoggingInterface.ILogger Logger { set; get; }
[Inject]
protected IRepository Repository { set; get; }
protected override void OnAuthorization(AuthorizationContext filterContext)
{
....
base.OnAuthorization(filterContext);
}
}
und der Bootstrapper in den NinjectMVC3 App_Start
private static void RegisterServices(IKernel kernel)
{
kernel.Bind(typeof(LoggingInterface.ILogger<>)).To(typeof(Log4NetLogger<>));
kernel.Bind().To();
kernel.Bind().To();
}
Vielen Dank, Stephen