2016-09-29 10 views
0

私はC#で初めてです。最近、プロジェクトに問題がありました。私は列挙型リストを使用してドロップダウンを生成する必要があります。私は良い仕事を見つけたsample。 しかし、そのサンプルは1つのenumのみを使用しています。私はそれを把握できません。私のコードはメソッドにenumを渡す

 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; 
    } 

私はこのメソッドに任意の列挙を渡す必要があります。どんな助けもありがたいです。たぶん

+0

あなたが追加してくださいすることができます:ところで、私はあなたがTEnum[]にキャストし、そのヌルチェックをスキップ「ハード」とas TEnum[]を置き換えることができると思うことで

GetSelectListItems<Industry>() 

重複した回答へのリンク – wajira000

答えて

2

この:

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[]; 
    // ... 

これはあなたの方法ジェネリックになります。それを呼び出すには、使用例:

var enumValues = (TEnum[])Enum.GetValues(typeof(TEnum)); 
+0

ありがとうございました。今それは正常に動作しています。あなたは私を救いました。 – wajira000

+0

ハードTEnumでTEnum []を使用する方法? – wajira000

関連する問題