这是我的代码-
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();
}
语言课-
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"
我发现通常的解决方法是强制返回,我正在(Language[])
进行操作,但是仍然出现此错误。我还可以如何修复此功能?
答案 0 :(得分:0)
您尚未定义enum
。您已经定义了一个自定义类,该类具有一些静态属性,例如通过定义enum
使它看起来像{em> Language.English
。
要做我想做的事情(列举所有预定义的Language
),您需要使用反射而不是调用Language
来获取类型为Enum.GetValues
的所有静态属性。
(未经测试)
typeof(Language).GetProperties(BindingFlags.Static | BindingFlags.Public)
.Where(f => f.PropertyType == typeof(Language))