如何从枚举成员wcf获取值

本文关键字:获取 wcf 枚举成员 | 更新日期: 2023-09-27 18:16:51

我有WCF服务与Enum作为数据契约。如何获取枚举值的列表。这是代码:

WCF 中的

[DataContract]
public enum MyEnum
{
   [EnumMember(Value="My first member")]
    First,
   [EnumMember(Value="My second member")]
    Second,
   [EnumMember(Value="My third member")]
    Third
}

在客户端应用程序:

Array myEnumMembers = Enum.GetValues(typeof(MyEnum));
foreach(MyEnum member in myEnumMembers )
{
   MembersListBoxControl.Items.Add(member.ToString());
}

这个可以工作,但是在我的列表框控件中,它显示没有空格的值,像这样:

Myfirstmember
Mysecondmember
Mythirdmember

如何从枚举成员wcf获取值

由于Enum的值必须遵循与c#中所有标识符相同的命名规则,我认为不能这样做。

您可以使用一些资源文件来存储字符串表示或尝试使用Description属性,如下所示:

public enum MyEnum
{
    [Description("Description for Foo")]
    Foo,
    [Description("Description for Bar")]
    Bar
}
MyEnum x = MyEnum.Foo;
string description = x.GetDescription(); // extension method provided in original answer.

MSDN关于属性的文章