Korzystanie z wtrysku zależności w programie ASP.NET MVC3 Model Binder

Pracuję na stronie MVC3, próbując użyć Ninject do rozwiązania moich zależności. Mam następujący scenariusz:

public class UserModelBinder : IModelBinder
{
    //[Inject]
    public UserDataService userData { get; set; }

    public object BindModel(
        ControllerContext controllerContext,
        ModelBindingContext bindingContext)
    {
        Guid UserID =
            (Guid)Membership.GetUser().ProviderUserKey;

        //userDataService = DependencyResolver.Current
        //    .GetService<UserDataService>();

        User user = userDataService.GetUser(UserID);

        return user;
    }
}

zauważyłeś skomentowane linie kodu?

Rejestruję segregatorGlobal.asax tak jak

ModelBinders.Binders[typeof(User)] = new UserModelBinder();

Więc nie mogę zrobić zastrzyku przez konstrukcję.

UserDataService ma łańcuch zależności:UserDataService -> UserRepository -> Context. Dobrze byłoby tutaj użyć Ninject.

Problem polega na tym, kiedy odkomentowałem[Inject] powyżejuserData deklaracja i spróbuj uzyskać Ninject, aby wstrzyknąć obiekt jako parametr, nie działa z jakiegoś powodu: otrzymuję zerowe wyjątki referencyjne.

(czy to możliweUserDataService nie ma interfejsu i wiążę obiekt ze sobą:kernel.Bind<UserDataService>().ToSelf(); ??)

Mam inny skomentowany wiersz w kodzie:

userDataService = DependencyResolver.Current
    .GetService<UserDataService>();

Kiedy to nie jest komentowane, konfiguracja działa, dostaję poprawne obiekty wstawione, ale teraz jesteśmy zależni od DependencyResolver i to nie jest dużo lepsze niż powiedzenieuserDataService = new UserDataService()

Czy czegoś mi brakuje? Czy istnieje inny sposób wstrzyknięcia obiektu jako parametru i nie wprowadzenia zależności od Ninject lub DependencyResolver?

questionAnswers(3)

yourAnswerToTheQuestion