Как сделать мой статический класс не таким статичным? - PullRequest
5 голосов
/ 19 февраля 2010

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

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

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

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

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

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

Ответы [ 2 ]

6 голосов
/ 19 февраля 2010

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

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

1 голос
/ 19 февраля 2010

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

...