Вы могли бы использовать первый способ (который, кажется, использует свойство), но лично я мог бы сделать что-то вроде этого.
public enum ThemeColor
{
TextColor,
BackgroundColor,
// Etc.
}
public ??? GetColor(ThemeColor color)
{
// Return the requested color here
}
Хотя это немного более многословно.
textColor = theme.GetColor(ThemeColor.TextColor);
Это может сделать вашу реализацию более простой.Например, может быть, ваши цвета хранятся в массиве или List<>
.Таким образом, вы можете просто преобразовать перечисление в целое число, которое эффективно служит индексом в вашем массиве.Гораздо проще, чем писать двадцать методов или свойств.
Я также считаю этот подход вполне читабельным.