2015-07-29 9 views
0

У меня есть метод веб-службы, который ожидает параметр типа OnlinePaymentResponse. Этот тип включает в себя свойство типа CustomData, как это:Прокси-классы, отображающие неправильный тип

[Serializable] 
public class OnlinePaymentResponse 
{   
    public CustomData CustomData { get; set; } 
} 

CustomData класс как это:

[XmlType(Namespace = XmlConstants.Namespace)] 
public class CustomData 
{ 
    public CustomData() 
    { 
     this.Tables = new List<DynamicTable>(); 
    } 

    [XmlElement("DynamicTable")] 
    public List<DynamicTable> Tables { get; set; } 

    ..... 

Проблема заключается в том, когда я генерировать прокси с svcutil.exe, InstEd о получении CustomData type Я получаю массив DynamicTable.

public partial class OnlinePaymentResponse 
{  
    private DynamicTable[] customDataField; 

    .......... 

Я играл с ним и обнаружили, что если удалить атрибут XmlElement свойства таблиц, он будет генерировать прокси-класс правильно:

public partial class OnlinePaymentResponse 
{  
    private CustomData customDataField; 

    .......... 

Я не понимаю, почему это произошло. Я играл с DataContract, DataMember, XmlRoot и другими атрибутами, но мне не удалось получить прокси-сервер без удаления атрибута XmlElement. Что мне здесь не хватает?

ответ

0

Svcutil попытается создать класс, который нельзя связать с .NET. type, поэтому массив является общим типом, который может использоваться для других платформ.

Вы можете создать атрибут CollectionDataContract (см. Больше здесь: CollectionDataContract attribute) и наследует от List, он будет генерировать комплекс, который не является массивом.

 Смежные вопросы

  • Нет связанных вопросов^_^