Как использовать System.Web.Abstractions в приложении веб-форм? - PullRequest
2 голосов
/ 21 июня 2009

Я работаю над приложением веб-форм, которое намеревается перенести в MVC для его выпуска vNext +1. Но на данный момент это приложение для веб-форм .NET 3.5 SP1.

Я хочу иметь наш собственный контекст , который предоставляет несколько помощников поверх стандартных объектов HttpContext / HttpRequest / HttpResponse / etc. Кроме того, я хочу отделить классы HttpContext от контекста.

Поскольку есть намерение перейти на MVC, я подумал, что было бы неплохо заставить наш пользовательский контекст работать с HttpContextBase (и связанными классами), который поставляется в сборке System.Web.Abstractions.

Я не хочу разрабатывать решение, которое решает некоторые проблемы в данный момент, но должно быть переписано для достижения тестируемости в MVC (и просто бесполезно в MCV), но то, чего я достиг до сих пор, не дает действительно кажется полезным.

Проблема в том, что я не могу найти хороших примеров того, как этого добиться, как расширить HttpContextWrapper или HttpContextBase, чтобы вы могли поддерживать разделение проблем.

Ответы [ 2 ]

0 голосов
/ 27 июля 2009

Вам не нужно переопределять HttpContextWrapper или HttpContextBase, чтобы достичь этого, но вместо этого ваш собственный контекст должен работать с объектом HttpContextBase, таким образом вы сможете тестировать свой собственный контекст изолированно.

public class MyContext
{

    // helper methods work with this context
    HttpContextBase _ctx;

    public MyContext(HttpContextBase context)
    {
        _ctx = context;
    }


}

А когда вы создаете пользовательский контекст в реальном приложении, просто инициализируйте, используя

new MyContext(new HttpContextWrapper(HttpContext.Current));
0 голосов
/ 21 июня 2009

Разве недостаточно написать некоторые методы расширения для HttpContext? Я сделал это в моем текущем приложении, и оно работает хорошо. Я полагаю, это зависит от того, насколько сложным вы хотите, чтобы ваш пользовательский класс HttpContext был, и от того, предназначен ли он для представления чего-то принципиально отличного от того, что представляет стандартный HttpContext. Я не могу действительно думать о сценарии для этого все же. Возможно, вы можете немного подробнее рассказать о том, как будет выглядеть ваш пользовательский HttpContext?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...