Во-первых, отдельная опция от вспомогательного метода - просто иметь Dictionary<LicenseTypes, string>
, который вы заполняете один раз.Вероятно, это был бы самый простой подход, если честно:
private static readonly Dictionary<LicenseTypes, string> LicenseDesciptions =
new Dictionary<LicenseTypes, string>
{
{ LicenseTypes.COMMERCIAL, "COMMERCIAL" },
{ LicenseTypes.COMMERCIAL_EARLY_ADOPTER, "COMMERCIAL EARLY-ADOPTER" },
{ LicenseTypes.DOMESTIC, "DOMESTIC" },
{ LicenseTypes.DOMESTIC_EARLY_ADOPTER, "DOMESTIC EARLY-ADOPTER" },
};
(Как отмечалось в комментариях, другой альтернативой является переключение / случай ... но я лично предпочитаю этот способ, так как эффективно у вас естьотображение data , поэтому имеет смысл использовать структуру data вместо структуры flow flow . Это также означает, что вы можете менять словари для разных языков и т. д.если хотите.)
Во-вторых, одним из вариантов было бы украсить каждое значение перечисления атрибутом [Description]
(или вашим собственным атрибутом, если хотите), и выяснить это с помощью отражения - Неограниченная мелодия имеет метод расширения, который может сделать это очень легко:
// Throws ArgumentOutOfRangeException if the licenseType value isn't defined
// or doesn't have a description.
string description = licenseType.GetDescription();
Кроме того, в соответствии с соглашениями именования .NET он должен быть:
public enum LicenseType // Singular as it's not a Flags enum
{
Discount,
DiscountEarlyAdopter,
Commercial,
CommercialEarlyAdopter
}