MVC 3 ninject связывает ленивый оцениваемый параметр

StackOverflow https://stackoverflow.com/questions/7834203

Вопрос

Я хочу связать свой контроллер с параметром, который вычисляется лениво.

родовое слово

А у меня следующая привязка:

родовое слово

Проблема в лямбда-функции.Я хочу вернуть Server.MapPath ("/") ... но у меня нет контекста запроса в объекте c.Как я могу его отправить?

Это было полезно?

Решение

Я не слишком хорошо знаком с Ninject, но у вас должна быть возможность зарегистрировать поставщика в контейнере, чтобы иметь возможность разрешать генерируемый код.Таким образом, код HttpContextBase теперь может принимать код IFilesRepository в качестве аргумента конструктора, который будет введен контейнером с помощью поставщика при создании экземпляра кода HttpContextBase.

Чтобы зарегистрировать поставщика (используя делегата для разрешения службы),

родовое слово

Однако имейте в виду, что стиль жизни генерируемого кода кода, скорее всего, потребуется изменить на стиль жизни "на основе веб-запроса", поскольку код генерирования кодовых меток создается для каждого веб-запроса, поэтому вы не захотите удерживать его вобщий кодовый код, который имел более долгий образ жизни.Вы можете абстрагироваться от функции "сопоставления путей", чтобы иметь общий кодовый код с более продолжительным стилем жизни.

Другие советы

Поскольку серверная переменная связана с текущим HttpContext, вам нужно будет получить ее внутри класса FilesManager (используя для этой цели отдельный интерфейс, если хотите)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top