Enum.IsDefined nimmt eine Zeichenkette, die den Namen eines Enum-Wertes enthält. Die einzige Unschönheit ist, dass Sie den führenden Punkt von Datei.Erweiterung und es wird zwischen Groß- und Kleinschreibung unterschieden:
Enum.IsDefined(typeof(FileExtension), file.Extension.Substring(1).ToLower())
Bearbeiten: Erweiterung Methode Güte, um nahe an Ihre gewünschte Syntax zu bekommen:
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));
Ich persönlich würde jedoch immer noch die IsDefined-Methode vorziehen:
bool IsDefined(this Type t, string name) {
if (!t.IsEnum) throw new ArgumentException();
return Enum.IsDefined(t, name);
}
typeof(FileExtension).IsDefined(file.Extension);