5 Stimmen

Warum löst Ninject geschützte Eigenschaften in einer Basisklasse nicht auf?

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X