【问题标题】:Getting enum descriptions from a class in webservice从 web 服务中的类获取枚举描述
【发布时间】:2012-05-09 20:25:16
【问题描述】:

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

}

当我这样做时,它不会将描述放入下拉列表中..而不是它获取值..

谁能告诉我我哪里出错了??

我什至查看了.NET databinding a combobox to a string enum with Description attributes,但在我的情况下它不起作用..有人可以帮忙吗。

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

【问题讨论】:

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

标签: c# web-services enums drop-down-menu


【解决方案1】:

解决此问题的最佳方法是将描述测试的源文件包含在客户端项目中,而不是像 @tim s 在他的一个 cmets 中建议的那样让它生成对它的服务引用!!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-21
    • 2018-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多