C# 从webservice中的类获取枚举描述

C# 从webservice中的类获取枚举描述,c#,web-services,enums,drop-down-menu,C#,Web Services,Enums,Drop Down Menu,我是C#的新手,我有个问题 我有一个web服务(webservice1),其中包含一个类。。该类有一个枚举 public class testnum { public enum test { [Description("1,2,3")] 123, [Description("3,4,5")] 345, [Description("6,7,8 ")] 678, } } 我

我是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();         
}
}

当我这样做时,它不会将描述放入下拉列表中。。相反,它得到的是价值

有人能告诉我哪里出了问题吗

我甚至看了一眼,但对我来说不起作用。。有人能帮忙吗


PS:如果我不清楚,请告诉我,我会再次解释我的问题

最好的方法是在客户端项目中包含描述测试的源文件,而不是让它生成@tim s在其评论中建议的对它的服务引用

最好的方法是在客户端项目中包含描述测试的源文件,而不是让它生成@tim s在其评论中建议的对它的服务引用

客户端将有一个包含
test
enum类型的服务引用。查看生成的.cs代码,看看它是否保留了
描述
属性。在我看来,很可能没有。在这种情况下,您需要以另一种方式进行。一种方法是尝试在客户机项目中包含描述
test
的源文件,而不是让它生成对它的服务引用。这样,
Description
属性仍然存在。请注意,这意味着它将在客户端进行硬编码,这可能并不总是与服务器匹配。在哪里可以看到服务引用。。我只有service.disco和service.wsdl:(对不起,我现在..如果这个问题太傻..我非常抱歉:(您能告诉我吗?在“解决方案资源管理器”窗口中,单击“显示所有文件”按钮。您应该在同一区域中看到一个.cs文件。或者在Windows资源管理器中打开您的ref文件夹并查找它。客户端将有一个包含
test
enum类型的服务引用。查看生成的.cs代码,并查看它是否保留
Description
属性。在我看来,它可能没有。在这种情况下,您需要以另一种方式进行操作。一种方法是尝试在客户端项目中包含描述
test
的源文件,而不是让它生成对它的服务引用。这样,
Description
attribute仍然存在。请注意,这意味着它将在客户端进行硬编码,这可能并不总是与服务器匹配。我在哪里可以看到服务参考..我只有service.disco和service.wsdl:(抱歉,我现在..如果问题太傻..我非常抱歉:(您能告诉我吗?在“解决方案资源管理器”窗口中,单击“显示所有文件”按钮。您应该会在同一区域中看到一个.cs文件。或者在Windows资源管理器中打开您的ref文件夹并查找它。