【问题标题】:XMLSerialization with WCF Enum Attribute ignored忽略 WCF 枚举属性的 XMLSerialization
【发布时间】:2011-08-05 10:57:38
【问题描述】:

在发送到网络之前,我在序列化对象时遇到问题。

基本上我希望我的对象被序列化为

<verb operation="and">Show</verb>

但是它忽略了属性为

<verb>Show</verb>

下面是客户端代理代码

    /// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("svcutil", "3.0.4506.2152")]
[System.SerializableAttribute()]
[System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.starstandards.org/webservices/2005/10/transport")]
public enum OperationEnumeratedType
{

    /// <remarks/>
    /// 
    and,

    /// <remarks/>
    /// 
    or,

    /// <remarks/>
    /// 
    not,
}


        /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute(Form = System.Xml.Schema.XmlSchemaForm.Qualified)]
    public OperationEnumeratedType operation
    {
        get
        {
            return this.operationField;
        }
        set
        {
            this.operationField = value;
        }
    }

下面是我如何创建这个对象。

                    verb = new CriteriaLogicStringType
                    {
                        operation = OperationEnumeratedType.and,
                        Value = "Show"
                    }

有谁知道我怎样才能让操作属性出现在序列化的 xml 中?

谢谢

【问题讨论】:

    标签: wcf attributes xml-serialization


    【解决方案1】:

    你应该用EnumMemberAttribute装饰OperationEnumeratedType枚举的成员,像这样:

    [DataContract]
    public enum OperationEnumeratedType
    {
        [EnumMember]
        And,
        [EnumMember]
        Or, 
        [EnumMember]
        Not
    }
    

    相关资源:

    【讨论】:

    • 感谢您的快速回复。不幸的是,我仅限于使用使用 XmlSerialization 生成的代理类。您知道如何使用 XmlSerialization 实现这一目标吗?
    • @activebiz 你如何将请求发送到服务?
    • 我使用的是使用 ClientBase 的 WCF 代理。我在上面尝试过,但结果相同。是因为我有其他使用 XmlSerilizer 的代理吗?
    猜你喜欢
    • 2011-10-18
    • 2017-06-03
    • 1970-01-01
    • 1970-01-01
    • 2017-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多