这个对象属性是什么

时间:2014-11-20 10:28:07

标签: c# .net xml oop properties

我的工具从XML生成了一个代码,在里面我可以看到这个,但是无法理解它

    [System.Xml.Serialization.XmlElementAttribute("Request", typeof(RequestType), Order = 0)]
    [System.Xml.Serialization.XmlElementAttribute("Response", typeof(ResponseType), Order = 0)]
    public object Item
    {
        get
        {
            return this.itemField;
        }
        set
        {
            if ((this.itemField != null))
            {
                if ((itemField.Equals(value) != true))
                {
                    this.itemField = value;
                    this.OnPropertyChanged("Item");
                }
            }
            else
            {
                this.itemField = value;
                this.OnPropertyChanged("Item");
            }
        }
    }

为什么类型是对象,以后如何知道继续使用什么类型?

1 个答案:

答案 0 :(得分:2)

代码的含义是Item可以使用RequestTypeResponseType类型的对象,并将其序列化/反序列化为RequestTypeResponseType。这纯粹取决于XSD的设计方式。

在您的情况下,我认为XML中的RequestResponse元素是另一个元素的一部分。何时使用Request以及何时使用Response纯粹是动态的。发送到Web服务的示例请求可能如下所示

<root>
<header>
</header>
<request>
....
</request>
</root>

并且来自Web服务的示例响应可以如下所示

<root>
<header>
</header>
<response>
....
</response>
</root>

并且您生成的引用/代理类可能类似于

public partial class Root {

public Header HeaderValue {
get { ... }
set { ... }
}

// then the item object
public object Item {
get { ... }
set { ... }
} 

}

构建请求时,您需要提前了解要使用的对象类型。恩。它将是Request对象类型。所以你的代码就像

Root root = new Root();
RequestType requestType = new RequestType();
requestType.someProperty = someValue;
...
objRoot.Item = requestType;

当它序列化时,它会以Request元素结束。当它从类型为Response的Web服务返回时也是如此。