У меня есть классы, определенные ниже (сгенерированные с использованием xsd):
[GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[SerializableAttribute]
[DebuggerStepThroughAttribute]
[DesignerCategoryAttribute("code")]
[XmlTypeAttribute(AnonymousType = true)]
[XmlRootAttribute(IsNullable = false)]
public class DataRequest
{
private string _serviceField;
private string _subscriptionField;
public string Service
{
get
{
return _serviceField;
}
set
{
_serviceField = value;
}
}
[XmlElement("Subscription"), DefaultValue(null)]
public string Subscription
{
get
{
return _subscriptionField;
}
set
{
_subscriptionField = value;
}
}
}
Затем я определяю массив указанного выше класса:
DataRequest[] requests = new DataRequest[2];
requests[0] = new DataRequest();
requests[1] = new DataRequest();
...
Я хочу сериализовать этомассив и в конечном итоге с приведенным ниже:
<SOAP-ENV:Body>
<DataRequest>
<Service>ServiceA</DataService>
<Subscription />
</DataRequest>
<DataRequest>
<Service>ServiceB</DataService>
<Subscription />
</DataRequest>
</SOAP-ENV:Body>
Однако, когда я вызываю ниже, где input это массив:
XmlSerializer serializer = new XmlSerializer(typeof(input));
serializer.Serialize(writer, input);
Я получаю следующее:
<Soap-ENV:Body>
<ArrayOfDataRequest>
<DataRequest>
<Service>ServiceA</DataService>
<Subscription />
</DataRequest>
<DataRequest>
<Service>ServiceB</DataService>
<Subscription />
</DataRequest>
</ArrayOfDataRequest>
</Soap-ENV:Body>
Есть ли какой-нибудь способ, которым я могу избавиться от элемента ArrayOfDataRequest , и просто получить фактические элементы массива, сериализованные напрямую?