如何使用WCF在枚举值中从服务到客户端或Web引用中公开description属性 或
如何使用WCF向客户端公开带有描述属性的枚举?虽然暴露描述属性不暴露,但只有枚举值在客户端公开。我希望在enums中描述attribue值。
答案 0 :(得分:1)
你不能强制这样做 - mex / WDSL描述符只包含与类型相关的一小部分信息。
如果您控制客户端,一个选项是在本地声明枚举(甚至所有类型),并从那里开始使用。您应该能够使用svcutil / reference:开关来使用现有程序集中的类型(IDE提供相同的类型)。但请注意,这部分违反了SOA规则(即您使用的信息多于服务合同所承诺的信息)。
答案 1 :(得分:0)
你可以用反射做到这一点。在获得Enum值后返回客户端。尝试使用GetField()&获取属性。 GetCustomAttributes()
using System;
using System.Reflection;
using System.ComponentModel;
namespace CustomAttributes
{
class Program
{
static void Main(string[] args)
{
Colors n1 = Colors.blue;
object [] attribues = n1.GetType().GetField(n1.ToString()).GetCustomAttributes(true);
Console.WriteLine((attribues[0] as DescriptionAttribute).Description);
// WOULD PRINT "DARK BLUE"
}
}
enum Colors
{
[Description("DARK BLUE")]
blue,
[Description("PLAIN WHITE")]
white
}
}
答案 2 :(得分:0)
查看XmlEnum Attribute。这将允许您指定xml属性的“名称”。例如:
public enum MyEnum
{
[XmlEnum("Coolbox")]
Esky,
[XmlEnum("Sandles")]
Thong,
[XmlEnum("MoreLikeGridironThanRealFootball")]
Footy,
}