gpt4 book ai didi

c# - 从枚举转换为 IEnumerable

转载 作者:可可西里 更新时间:2023-11-01 08:15:05 27 4
gpt4 key购买 nike

你能帮我修改这段代码吗

using System;
using System.Collections;
using System.Collections.Generic;
using System.Reflection;

namespace NTSoftHRM
{

// ------------------------------------------------------------------------
public class EnumValueList<T> : IEnumerable<T>
{

// ----------------------------------------------------------------------
public EnumValueList()
{
IEnumerable<T> enumValues = GetEnumValues();
foreach ( T enumValue in enumValues )
{
enumItems.Add( enumValue );
}
} // EnumValueList

// ----------------------------------------------------------------------
protected Type EnumType
{
get { return typeof( T ); }
} // EnumType

// ----------------------------------------------------------------------
public IEnumerator<T> GetEnumerator()
{
return enumItems.GetEnumerator();
// return ((IEnumerable<T>)enumItems).GetEnumerator();

} // GetEnumerator

// ----------------------------------------------------------------------
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
} // GetEnumerator

// ----------------------------------------------------------------------
// no Enum.GetValues() in Silverlight
private IEnumerable<T> GetEnumValues()
{
List<T> enumValue = new List<T>();

Type enumType = EnumType;

return Enum.GetValues(enumType);

} // GetEnumValues

// ----------------------------------------------------------------------
// members
private readonly List<T> enumItems = new List<T>();

} // class EnumValueList

}

构建时错误是:无法将类型“System.Array”隐式转换为“System.Collections.Generic.IEnumerable”。返回 Enum.GetValues(enumType) 时存在显式转换(您是否缺少强制转换?)

最佳答案

问题出在您的 GetEnumValues方法,Enum.GetValues返回 Array不是IEnumerable<T> .你需要施放它,即

Enum.GetValues(typeof(EnumType)).Cast<EnumType>();

关于c# - 从枚举转换为 IEnumerable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19909596/

27 4 0