2012-05-09 32 views
1

我是新来的C#和我有问题,获取枚举说明从一类web服务

我有有一个类中有一个Web服务(webservice1)..类有一个enum ..

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

}

,当我做到这一点dosent得到说明进入下降downlist ..而它得到的值..

有人可以让我知道IA要去错误?

我甚至看了.NET databinding a combobox to a string enum with Description attributes但它在我的情况..可以有人帮dosent工作。

PS:让我知道如果我不清楚我再解释一下我的问题!

+1

客户将有一个包含了'test'枚举类型的服务引用。查看生成的.cs代码,看看它是否保留了'Description'属性。对我来说它似乎没有。在这种情况下,你需要以另一种方式去做。一种方法是尝试在客户端项目中包含描述'test'的源文件,而不是让它生成服务引用。这样,'Description'属性仍然存在。请注意,这意味着它将在客户端进行硬编码,可能并不总是与服务器匹配。 –

+0

我在哪里可以看到服务参考..我只是有service.disco和service.wsdl :(抱歉,我现在..如果这个问题是太傻了..我高度道歉:(u能请让我知道? – helpme

+0

在Solution Explorer窗口中,单击显示所有文件按钮。您应该看到在同一区域中的cs文件,或者在Windows资源管理器中打开您的参考文件夹,并寻找它。 –

回答

1

接近这一点的最好办法是包括源文件描述客户端项目的测试,而不是让它产生一个服务引用它由@tim S IN的他的意见之一建议!