Enum.IsDefined prendra une chaîne contenant le nom d'une valeur enum. La seule laideur est que vous devez enlever la période menant hors de File.Extension et il est sensible à la casse:
Enum.IsDefined(typeof(FileExtension), file.Extension.Substring(1).ToLower())
Edit: bonté Méthode d'extension pour se rapprocher de votre syntaxe désirée:
IEnumerable<string> GetNames(this Type t) {
if (!t.IsEnum) throw new ArgumentException();
return Enum.GetNames(t);
}
typeof(FileExtensions).GetNames().Any(e=>e.ToString().Equals(file.Extension));
Personnellement, bien que , Je préfère encore la route IsDefined:
bool IsDefined(this Type t, string name) {
if (!t.IsEnum) throw new ArgumentException();
return Enum.IsDefined(t, name);
}
typeof(FileExtension).IsDefined(file.Extension);
Vous avez raison: P –
Cela nécessite 'using System.Linq', correct? –