Я создаю класс поиска, поэтому во всех проектах будет использоваться постоянное значение. Дело в том, что есть несколько решений для создания такой штуки. Я мог бы создать один класс с перечислениями, структурами или константами или создать один класс для каждого «объекта». Мне интересно, что было бы лучшим решением.
Сначала я подумал сделать что-то вроде этого:
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; } }
}
Это основано на ответе, приведенном ниже. Причина в том, что теперь я могу использовать это также для не строк и целых чисел, что на самом деле невозможно с перечислением с описанием и файлом ресурсов, хотя мне это кажется более чистым.