как разрешить тип или пространство имен «HttpContextBase» не удалось найти в библиотеке классов ASP. Net в новой библиотеке классов, которую я создал - PullRequest
0 голосов
/ 26 мая 2020

publi c class BasketService {IRepositoryBase корзины;

    public const string BasketSession = "eCommerceBasket";
    public BasketService(IRepositoryBase<Basket> baskets)
    {
        this.baskets = baskets;
    }
    private Basket CreateNewBasket(HttpContextBase httpContext)
    {

    }
}

1 Ответ

0 голосов
/ 26 мая 2020

Если это действительно то, что вы хотите ...

Класс HttpContextBase находится в пространстве имен System.Web. Таким образом, вам нужно либо полностью указать имя класса:

private Basket CreateNewBasket(System.Web.HttpContextBase httpContext)
{

}

, либо добавить соответствующую директиву using в верхней части файла кода. :

using System.Web;

Если затем вы получите сообщение об ошибке, что HttpContextBase не находится в этом пространстве имен или что пространство имен не существует, дважды проверьте, что вы добавили ссылку на свой проект. В обозревателе решений Visual Studio щелкните правой кнопкой мыши узел «Ссылки» в проекте и выберите «Добавить ссылку». Перейдите к «Сборкам», чтобы найти и выбрать System.Web. Нажмите «ОК».

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

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

Что мне нужно, чтобы «создать» новую «корзину»?

Какая бы это ни была информация, вот какая CreateNewBasket следует принимать в качестве параметров. Может быть, это несколько значений, может быть, это настраиваемый объект, решать вам. Но для «создания корзины» не требуется контекст HTTP. Для этого требуются некоторые значения, которые вы ожидаете найти в своем контексте HTTP в определенное время.

Уровень приложения должен нести ответственность за извлечение этих значений из контекста HTTP и предоставление их CreateNewBasket. Код общего назначения должен требовать только сами значения.

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