1

私はC#を初めて使用しますが、質問があります。

クラスを含むWebサービス(webservice1)があります。クラスに列挙型があります。

public class testnum
{
     public enum test
     {
        [Description("1,2,3")]
        123,
        [Description("3,4,5")]
        345,
        [Description("6,7,8 ")]
        678,
     }
}

Webサービスにクライアントを作成しようとしていて、列挙型の説明をドロップダウンリストにバインドし、列挙型の値をそれぞれのリストアイテムにバインドしたい...次のようなことを試みていました

   protected void ddl1_Load(object sender, EventArgs e)
{
    webservice1.Service s = new webservice1.Service();

    foreach( webservice1.test value in Enum.GetValues(typeof(webservice1.test)))
  {
      ddl1.Items.Add(new ListItem(value.GetEnumDescription(), value.ToString()));

  }
        }

         }
               public static class ENUMHelper
         {
          public static string GetEnumDescription(this Enum value)
         {
    FieldInfo fi = value.GetType().GetField(value.ToString());

    DescriptionAttribute[] attributes =
        (DescriptionAttribute[])fi.GetCustomAttributes(
        typeof(DescriptionAttribute),
        false);

    if (attributes != null &&
        attributes.Length > 0)
        return attributes[0].Description;
    else
        return value.ToString();         
}

}

私がこれを行うとき、それはドロップダウンリストに説明を取得しません..むしろそれは値を取得します..

誰かが私にどこが間違っているのか教えてもらえますか?

コンボボックスをDescription属性を持つ文字列列挙型にデータバインディングする.NETも調べましたが、私の場合は機能しません..誰かが助けてくれますか。

PS:はっきりしない場合は、もう一度質問を説明してください。

4

1 に答える 1

1

これに取り組む最善の方法は、@ tim sがコメントの1つで提案しているように、テストを説明するソースファイルを生成するのではなく、クライアントプロジェクトに含めることです。

于 2012-05-10T17:41:30.860 に答える