你能在C#中的代码中为对象属性获取/设置XmlElementAttribute吗?

时间:2014-12-04 12:15:21

标签: c# xml xml-serialization wscf.blue

WSCF blue在xml-schema中选择生成类似的内容:

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.34234")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.some.com/nis/componentsync/v1.0", TypeName="tComponentKey")]
[System.Xml.Serialization.XmlRootAttribute(ElementName="tComponentKey")]
public partial class TComponentKey
{

    private object itemField;

    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute("id", typeof(int))]
    [System.Xml.Serialization.XmlElementAttribute("label", typeof(string))]
    public object Item
    {
        get { return this.itemField; }
        set { this.itemField = value; }
    }
}

编辑:以下2行已整理出来。如果在类型为string或int的模式中再添加一个选项,则只能按类型将它们分开。

在某些情况下,它还会生成ItemElementName或枚举的内容,因此我知道它是id还是label。出于某种原因,这个选择没有,所以我想知道这是否可以设置/得到某种方式。

编辑:上面的2行被整理出来。见上面的解释

在degbugger中,我可以看到对象的属性是什么。当我为属性分配字符串ABC123时,它可以显示label = ABC123。所以它基于类型。但是标签也可以是int,我想设置,自己搞定,不要相信这种基于非感觉的。

编辑:请求消息中反序列化为对象的xml示例:

此处,消费者希望通过它的整数id来获取组件。

<v1:componentkey>
        <!--You have a CHOICE of the next 2 items at this level-->
        <v11:id>123123</v11:id>
</v1:componentkey>

此处,消费者希望通过它的字符串标签来获取组件。

<v1:componentkey>
        <!--You have a CHOICE of the next 2 items at this level-->
        <v11:label>ABC123</v11:label>
</v1:componentkey>

0 个答案:

没有答案