我的工具从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");
}
}
}
为什么类型是对象,以后如何知道继续使用什么类型?
答案 0 :(得分:2)
代码的含义是Item
可以使用RequestType
或ResponseType
类型的对象,并将其序列化/反序列化为RequestType
或ResponseType
。这纯粹取决于XSD的设计方式。
在您的情况下,我认为XML中的Request
或Response
元素是另一个元素的一部分。何时使用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服务返回时也是如此。