我不知道如何将以下行从VB转换为C#:
Dim values As New List(Of T)(System.Enum.GetValues(GetType(T)))
我的版本不起作用:
List<T> values = new List<T>(System.Enum.GetValues(typeof(T)));
最佳重载方法匹配 'System.Collections.Generic.List.List(System.Collections.Generic.IEnumerable)' 有一些无效的论点
构造函数参数不会这样 - 我丢失了什么演员(或其他)?
澄清:它包含在以下通用方法中
public static void BindToEnum<T>()
{
List<T> values = new List<T>(System.Enum.GetValues(typeof(T)));
//...
}
答案 0 :(得分:11)
使用LINQ:
List<T> list = System.Enum.GetValues(typeof(T))
.Cast<T>()
.ToList<T>();
答案 1 :(得分:3)
只需添加.Cast<T>()
:
List<T> values = new List<T>(System.Enum.GetValues(typeof(T)).Cast<T>());
答案 2 :(得分:0)
基于这篇文章,我创建了一个为我做这个的功能;当你想循环遍历枚举的所有值以验证某些东西只适用于某些值时,它在单元测试中表现很好。
bookshelf.transaction(function (t) {
var modelLocation = new Models.Location({'name':event.venue});
return modelLocation
.fetch()
.then(function (fetchedLocation) {
if (!fetchedLocation) {
modelLocation
.save(null,{transacting:t});
}
})l
});
然后我可以像这样使用它:
public static IEnumerable<T> GetEnumValues<T>()
{
return Enum.GetValues(typeof(T)).Cast<T>();
}