Использование внедрения зависимостей в ASP.NET MVC3 Model Binder

Я работаю над сайтом MVC3, пытаясь использовать Ninject для разрешения моих зависимостей. У меня есть следующий сценарий:

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;
    }
}

заметил закомментированные строки кода?

Я регистрирую переплет вGlobal.asax ка

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

Так что я не могу сделать инъекцию через конструкцию.

UserDataService имеет цепочку зависимостей:UserDataService -> UserRepository -> Context. Так что было бы хорошо использовать Ninject здесь.

Проблема в том, когда я раскомментирую[Inject] надuserData объявление и попробуйте заставить Ninject ввести объект в качестве параметра, по какой-то причине это не работает: я получаю исключения с нулевой ссылкой.

( может быть такUserDataService @ нет интерфейса, и я привязываю объект к себе:kernel.Bind<UserDataService>().ToSelf(); ??)

У меня есть еще одна закомментированная строка в коде:

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

Когда это не комментируется, настройка работает, я вставляю правильные объекты, но теперь мы зависим от DependencyResolver, и это не намного лучше, чем сказатьuserDataService = new UserDataService()

Я что-то пропустил? Есть ли другой способ добавить объект в качестве параметра и не вводить зависимость от Ninject или DependencyResolver?

Ответы на вопрос(3)

Ваш ответ на вопрос