Для тех, кто любит решать проблемы, вот большой: P
Что ж, я разрабатываю систему с использованием веб-сервисов, где я отправляю и получаю XML в качестве параметра (а не обычные параметры, такие как Int, String, bool и т. д.).
После того, как я получаю XML, я проверяю XML с помощью XSD, а также преобразовываю его в объект ... после процесса я также преобразую этот объект в XML (проверенный XSD) и вернуть в качестве ответа на мой запрос WS.
Что ж, моя проблема: у меня сложный тип, который мне нужно преобразовать с помощью отражения, но у меня возникает проблема, которую я никогда раньше не видел.
Мой XSD:
<xsd:element name="EnviarLoteRpsResposta">
<xsd:complexType>
<xsd:choice>
<xsd:sequence>
<xsd:element name="NumeroLote" type="tsNumeroLote" minOccurs="1" maxOccurs="1"/>
<xsd:element name="DataRecebimento" type="xsd:dateTime" minOccurs="1" maxOccurs="1"/>
<xsd:element name="Protocolo" type="tsNumeroProtocolo" minOccurs="1" maxOccurs="1"/>
</xsd:sequence>
<xsd:element ref="ListaMensagemRetorno" minOccurs="1" maxOccurs="1"/>
</xsd:choice>
</xsd:complexType>
</xsd:element>
Мой класс (обычный класс с GET и SET):
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.3038")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.abrasf.org.br/ABRASF/arquivos/nfse.xsd")]
[System.Xml.Serialization.XmlRootAttribute(Namespace = "http://www.abrasf.org.br/ABRASF/arquivos/nfse.xsd", IsNullable = false)]
public class EnviarLoteRpsResposta
{
private object[] itemsField;
private ItemsChoiceType[] itemsElementNameField;
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute("DataRecebimento", typeof(System.DateTime))]
[System.Xml.Serialization.XmlElementAttribute("ListaMensagemRetorno", typeof(ListaMensagemRetorno))]
[System.Xml.Serialization.XmlElementAttribute("NumeroLote", typeof(string), DataType = "nonNegativeInteger")]
[System.Xml.Serialization.XmlElementAttribute("Protocolo", typeof(string))]
[System.Xml.Serialization.XmlChoiceIdentifierAttribute("ItemsElementName")]
public object[] Items
{
get
{
return this.itemsField;
}
set
{
this.itemsField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute("ItemsElementName")]
[System.Xml.Serialization.XmlIgnoreAttribute()]
public ItemsChoiceType[] ItemsElementName
{
get
{
return this.itemsElementNameField;
}
set
{
this.itemsElementNameField = value;
}
}
}
}
Как я использую этот класс?:
EnviarLoteRpsResposta enviarLoteRpsResposta = new EnviarLoteRpsResposta();
enviarLoteRpsResposta.Items = new object[1];
enviarLoteRpsResposta.Items[0] = DateTime.Now;
enviarLoteRpsResposta.ItemsElementName = new ItemsChoiceType[1];
enviarLoteRpsResposta.ItemsElementName[0] = ItemsChoiceType.DataRecebimento;
Моя ошибка возникает при попытке преобразовать этот объект в XML: XmlSerializer xs = new XmlSerializer (enviarLoteRpsResposta.GetType ());
Моя ошибка: произошла ошибка, отражающая тип 'NFSEWS.Models.Bean.EnviarLoteRpsResposta '.
Я не знаю, что я могу сделать, чтобы решить эту проблему ..