internal static string RequiredFeature(this SoalFeature feature) { switch (feature) { default: return(null); } }
internal static LanguageVersion RequiredVersion(this SoalFeature feature) { switch (feature) { case SoalFeature.None: return(LanguageVersion.Soal1); default: throw new ArgumentOutOfRangeException(nameof(feature), "Unexpected value: " + feature); } }
internal bool IsFeatureEnabled(SoalFeature feature) { string featureFlag = feature.RequiredFeature(); if (featureFlag != null) { return(Features.ContainsKey(featureFlag)); } LanguageVersion availableVersion = LanguageVersion; LanguageVersion requiredVersion = feature.RequiredVersion(); return(availableVersion >= requiredVersion); }