Как я делаю свой статический класс не таким образом статичным?

У меня есть статический класс, который содержит мою логику базы данных.

Этот класс используется в веб-сайте, веб-сервисах и как часть компонента промежуточного программного обеспечения.

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

Я не могу сохранить это значение в конфигурации, потому что это могло бы отличаться на пользователя, и у меня не всегда есть httpcontext для получения этого от.

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

Так есть ли какие-либо другие возможности, которые я не рассмотрел?

5
задан Chris Simpson 19 February 2010 в 17:06
поделиться

2 ответа

Если всем методам требуется некоторое состояние, это очень похоже на то, что вам нужно создать экземпляр и передать это состояние через конструктор.

Изменение конструкции с кучи статических методов на экземпляр также облегчит тестирование класса.

6
ответ дан 14 December 2019 в 08:49
поделиться

Я бы добавил параметры. Мне это не кажется неэлегантным - вам нужна контекстная информация, и единственный способ получить ее в статическом классе - передать ее.

1
ответ дан 14 December 2019 в 08:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: