Класс поиска использует enum, struct, public const, что-то еще?

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

Сначала я подумал сделать что-то вроде этого:

public static class Defines
    {
        public enum PAGELAYOUT_NAMES
        {
            STANDARD = "Standard"
        }
    }

Но лично мне не очень нравится использовать строки в перечислениях. Другой вариант - использовать структуру, что еще более уродливо, если вы видите код:

public static class Defines
    {
        public struct PAGELAYOUT_NAMES
        {
            public static string STANDAARD = "Standaard";
        }
    }

Это выглядит немного лучше, но может сбивать с толку при наличии большого количества вариантов:

public static class Defines
{
        public const string PAGELAYOUT_NAMES_STANDARD = "Standard";
}

Я думаю, что при наборе этого сообщения это будет лучший / чистый вариант:

public static class PageLayout
{
    public const string STANDARD = "Standard";
}

Есть другие предложения? Заполнение проекта несколькими классами, которые определяют только некоторые константы, мне кажется излишним и беспорядочным.

Править В исходном контексте это было не очень понятно, но значения поиска не ограничиваются только строками. Некоторые очень хорошие предложения, приведенные ниже, возможны только при использовании только строк, но также необходимо поддерживать типы Int, DateTime и другие. Из ответов здесь есть несколько хороших идей, я попробую, какая из них лучше всего подойдет для моего текущего проекта.

Окончательное реализованное решение Благодаря предложениям, приведенным ниже, я реализовал такие классы поиска:

 internal class Base<T>
    {
        internal T Value{ get; private set;}
        internal Base(T value)
        {
            Value = value;
        }
    }
    public class PageLayout
    {
        public static string Standard { get { return new Base<string>("Standard").Value; } }
    }

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

5
задан Jan_V 30 November 2010 в 13:39
поделиться