C# “错误”;提供的类型必须是枚举。参数名称:enumType";
这是我的密码-C# “错误”;提供的类型必须是枚举。参数名称:enumType";,c#,asp.net,C#,Asp.net,这是我的密码- private List<LanguageResource> GetAll() { return ((Language[])Enum.GetValues(typeof (Language))) .Select(l => new LanguageResource {
private List<LanguageResource> GetAll()
{
return ((Language[])Enum.GetValues(typeof (Language)))
.Select(l => new LanguageResource
{
Id = (int) l,
Name = l.ToString()
})
.OrderBy(l => l.Name)
.ToList();
}
我发现的常见修复方法是强制执行返回,我正在执行
(Language[])
,但是我仍然会遇到此错误。。如何修复此函数?您尚未定义枚举。例如,通过定义Language.English
,您定义了一个自定义类,该类具有一些静态属性,使其看起来像enum
要执行我认为需要的操作(枚举所有预定义的Language
s),您需要使用反射来获取Language
类型的所有静态属性,而不是调用Enum.GetValues
类似于(未经测试)
Enum.GetValues
需要一个枚举,Language
不是枚举吗?我建议您,这似乎是在尝试在不使用任何枚举的情况下创建自己的enum
实现。非常奇怪。请阅读Jimmy Bogard关于enum类的文章:@DavidG谢谢-我一直将它们视为字段,因此我忽略了它们是属性。
public class Language : IEmbeddedDocument, IEquatable<Language>
{
public int Id { get; set; }
public string Name { get; set; }
public Language()
{
}
private Language(int id, string name)
{
Id = id;
Name = name;
}
public static Language Unknown { get { return new Language(0, "Unknown"); } }
public static Language English { get { return new Language(1, "English"); } }
public static Language French { get { return new Language(2, "French"); } }
public static Language Spanish { get { return new Language(3, "Spanish"); } }
}
"Type provided must be an Enum. Parameter name: enumType"
typeof(Language).GetProperties(BindingFlags.Static | BindingFlags.Public)
.Where(f => f.PropertyType == typeof(Language))