【发布时间】:2010-04-21 21:53:27
【问题描述】:
我有一些使用消息合约的 Web 服务。可能值得一提的是,对于这些服务,我不能转向数据合约......
我的一个类型指定了一个其类型恰好是枚举的属性:
[SerializableAttribute()]
[MessageContract(IsWrapped = false)]
[KnownType(typeof(RiskTypeCode))]
public partial class RiskType : Lookup
{
private RiskTypeCode codeField;
/// <remarks/>
[XmlElement(ElementName="code")]
[MessageBodyMember]
public RiskTypeCode Code
{
get
{
return this.codeField;
}
set
{
this.codeField = value;
}
}
e.t.c.
我的枚举定义为:
[Serializable()]
[DataContract]
public enum RiskTypeCode
{
/// <remarks/>
[XmlEnumAttribute(Name = "THING1")]
[EnumMember]
THING1,
/// <remarks/>
[XmlEnumAttribute(Name="THING2")]
[EnumMember]
THING2,
/// <remarks/>
[XmlEnumAttribute(Name="THING3")]
[EnumMember]
THING3,
}
但是当我通过网络发送这个时,RiskTypeCode 属性没有被序列化 - 即它被从输出中省略了。
我需要用什么来装饰我的枚举/属性才能让它跨过网络?
【问题讨论】:
-
嗨@Kiquenet,对不起,这是很久以前的事了,我不记得它是如何解决的。我怀疑我们可能将其切换为整数,或者可能为股票序列化程序创建了覆盖。
-
@Kiquenet 看起来很有用,但我没有代码库来验证这是否解决了问题。
标签: wcf enums serialization messagecontract