Einfache Frage, die ich schätze, aber ich habe eine Stunde damit verbracht, eine Basisklasse für meine Controller zu bekommen, um ein paar Dienste über Property Injection injiziert haben. Die Eigenschaften waren zuerst geschützt, aber die Objekte kamen immer wieder zurück null, sobald ich den Bereich auf öffentlich geändert es funktionierte. Gibt es irgendwie zu haben, die Eigenschaften geschützt werden und erhalten die IoC zu arbeiten?
Hier ist mein Aufbau.
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);
}
}
und der Bootstrapper in der 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>();
}
Ich danke Ihnen, Stephen