Enum.IsDefined будет принимать строку, содержащую имя значения перечисления. Единственное уродство в том, что вам нужно убрать начальный период из File.Extension и он чувствителен к регистру:
Enum.IsDefined(typeof(FileExtension), file.Extension.Substring(1).ToLower())
Редактировать: совершенство метода расширения, чтобы приблизиться к желаемому синтаксису:
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));
Лично я все же предпочел бы маршрут IsDefined:
bool IsDefined(this Type t, string name) {
if (!t.IsEnum) throw new ArgumentException();
return Enum.IsDefined(t, name);
}
typeof(FileExtension).IsDefined(file.Extension);