Как обрабатывать глобальные строковые константы ASP.NET MVC - PullRequest
3 голосов
/ 11 декабря 2010

У меня есть новый проект MVC 3, и в нем я использую аннотации моделей, такие как:

[DisplayFormat(NullDisplayText = "[Not set]")]

Я предпочитаю избегать дублирования строкового литерала, используя что-то вроде этого:

[DisplayFormat(NullDisplayText =  GlobalStrings.Nulls.DefaultNullText)]

где:

public struct GlobalStrings
{
    public struct Nulls
    {
        public const string DefaultNullText = "[Not set]";
    }
}

Но я не могу не чувствовать, что есть лучший способ сделать это?

1 Ответ

6 голосов
/ 12 декабря 2010

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

Использование одной структуры GlobalStrings также неплохо, если строки в этом месте действительно глобальны (используются во многих местах в вашей программе). Однако обычно это не так (за исключением действительно глобального текста, например, ApplicationName и Publisher).

Строки обычно используются в более локализованной части вашего приложения (например, в подсистеме). Вы могли бы рассмотреть возможность использования другой структуры simlar для «глобалов» только для этой подсистемы. Если строки нужны только в пределах одного класса или иерархии классов, рассмотрите возможность помещения их в базовый класс. Если вы поместите каждую из ваших «глобальных» строк в класс, к которому она больше всего относится, это поможет классифицировать и связать константы с областью, в которой они применимы. Таким образом, если «нулевой текст по умолчанию» фактически применяется только к данным, которые вы извлекаете с помощью класса «DataAccess» и пользователей этого класса, то подумайте о добавлении его в качестве открытого const / свойства класса DataAccess, чтобы клиенты этого класса могли получить к нему доступ. «глобальный» как DataAccess.DefaultNullString - это делает более понятным для других программистов использование этой константы.

Включая константы в класс, они технически все еще доступны «глобально», но не являются «глобальными» в злом смысле («здесь константа, но я понятия не имею, где в программе она применяется»)

Вы обнаружите, что если вы таким образом встраиваете свои константы в разные классы / подсистемы, ваша структура GlobalStrings станет очень маленькой или даже пустой.

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