Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将枚举传递给方法_C#_Asp.net_Asp.net Mvc - Fatal编程技术网

C# 将枚举传递给方法

C# 将枚举传递给方法,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,我是C#的新手。最近我在一个项目上遇到了一个问题。我需要使用枚举列表生成下拉列表。我找到了一份好工作。 但该示例仅使用一个枚举,我的要求是对任何枚举使用此代码。我想不出来。我的代码是 public List<SelectListItem> GetSelectListItems() { var selectList = new List<SelectListItem>(); var enumValues

我是C#的新手。最近我在一个项目上遇到了一个问题。我需要使用枚举列表生成下拉列表。我找到了一份好工作。 但该示例仅使用一个枚举,我的要求是对任何枚举使用此代码。我想不出来。我的代码是

        public List<SelectListItem> GetSelectListItems()
        {
         var selectList = new List<SelectListItem>();

         var enumValues = Enum.GetValues(typeof(Industry)) as Industry[];
         if (enumValues == null)
            return null;

        foreach (var enumValue in enumValues)
        {
            // Create a new SelectListItem element and set its 
            // Value and Text to the enum value and description.
            selectList.Add(new SelectListItem
            {
                Value = enumValue.ToString(),
                // GetIndustryName just returns the Display.Name value
                // of the enum - check out the next chapter for the code of this function.
                Text = GetEnumDisplayName(enumValue)
            });
        }

        return selectList;
    }
公共列表GetSelectListItems() { var selectList=新列表(); var enumValues=Enum.GetValues(typeof(Industry))作为行业[]; 如果(枚举值==null) 返回null; foreach(枚举值中的变量枚举值) { //创建新的SelectListItem元素并设置其 //值和文本转换为枚举值和说明。 选择列表。添加(新的选择列表项) { Value=enumValue.ToString(), //GetIndustryName只返回Display.Name值 //在下一章中查看此函数的代码。 Text=GetEnumDisplayName(enumValue) }); } 返回选择列表; } 我需要将任何枚举传递给此方法。非常感谢您的帮助。

也许:

public List<SelectListItem> GetSelectListItems<TEnum>() where TEnum : struct
{
  if (!typeof(TEnum).IsEnum)
    throw new ArgumentException("Type parameter must be an enum", nameof(TEnum));

  var selectList = new List<SelectListItem>();

  var enumValues = Enum.GetValues(typeof(TEnum)) as TEnum[];
  // ...
也许是这样:

public List<SelectListItem> GetSelectListItems<TEnum>() where TEnum : struct
{
  if (!typeof(TEnum).IsEnum)
    throw new ArgumentException("Type parameter must be an enum", nameof(TEnum));

  var selectList = new List<SelectListItem>();

  var enumValues = Enum.GetValues(typeof(TEnum)) as TEnum[];
  // ...

非常感谢你。现在它工作得很好。你救了我。如何用硬TEnum作为TEnum[]呢?非常感谢。现在它工作得很好。你救了我。如何使用as TEnum[]和hard TEnum?你能添加到重复答案的链接吗?你能添加到重复答案的链接吗
  var enumValues = (TEnum[])Enum.GetValues(typeof(TEnum));