如何在第三方XML中创建类型数组的实例?

时间:2017-03-27 10:36:02

标签: c# xml web-services

我编写了一个简单的C#Windows应用程序来测试第三方Web服务。以下是生成的Reference.cs中的两个字段

/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Order = 4)]
public PriceType Price
{
    get
    {
        return this.priceField;
    }
    set
    {
        this.priceField = value;
        this.RaisePropertyChanged("ExpectedPrice");
    }
}

/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute("Contact", Order = 5)]
public ContactType[] Contact
{
    get
    {
        return this.contactField;
    }
    set
    {
        this.contactField = value;
        this.RaisePropertyChanged("Contact");
    }
}

我创建了请求对象,并将价值分配给Price,如下所示: -

RequestServiceType myRequest = new RequestServiceType();

myRequest.Price = new Blah.PriceType();
myRequest.Price.GrossPrice = new Blah.AmountType();
myRequest.Price.GrossPrice.Value = 10M;

然而

myRequest.Contact = new Blah.ContactType();
  

错误&#39;无法隐式转换类型&#39; RequestServiceType.ContactType&#39;到&#39; RequestServiceType.ContactType []&#39;。

ContactType是Reference.cs(ContactType[])中的数组。如何在Contact中创建myRequest的实例?

2 个答案:

答案 0 :(得分:0)

您可以尝试明确铸造吗?

myRequest.Contact =(联系[])(new Blah.ContactType());

答案 1 :(得分:0)

您的语法是什么问题。

错误消息清楚地说明了当属性需要该对象的数组时,您正试图将该对象的实例分配给该属性。

这将包含一个包含一个实例的数组

myRequest.Contact = new []{ new Blah.ContactType() };

只是

的合成糖
var contact = new new Blah.ContactType();
var array = new Blah.ContactType[1];
array[0] = contact;
myRequest.Contact = array;