代理 类 暴露了错误的类型
Proxy classes exposing the wrong type
我有一个需要 OnlinePaymentResponse 类型参数的 Web 服务方法。此类型包括一个 属性 类型的 CustomData,如下所示:
[Serializable]
public class OnlinePaymentResponse
{
public CustomData CustomData { get; set; }
}
CustomData class 是这样的:
[XmlType(Namespace = XmlConstants.Namespace)]
public class CustomData
{
public CustomData()
{
this.Tables = new List<DynamicTable>();
}
[XmlElement("DynamicTable")]
public List<DynamicTable> Tables { get; set; }
.....
问题是,当我使用 svcutil.exe 生成代理时,不是获取 CustomData 类型,而是获取 DynamicTable 数组。
public partial class OnlinePaymentResponse
{
private DynamicTable[] customDataField;
..........
我一直在玩它,发现如果我删除表 属性 的 XmlElement 属性,它将正确生成代理 class:
public partial class OnlinePaymentResponse
{
private CustomData customDataField;
..........
我不明白为什么会这样。我一直在使用 DataContract、DataMember、XmlRoot 和其他属性,但如果不删除 XmlElement 属性,我就无法获得正确的代理。我在这里错过了什么?
Svcutil 尝试生成 class 不耦合到 .NET。类型,因此数组是可用于其他平台的通用类型。
您可以创建一个具有 CollectionDataContract 属性(更多信息参见此处:CollectionDataContract attribute)并继承自 List,它将生成一个不是数组的复合体。
我有一个需要 OnlinePaymentResponse 类型参数的 Web 服务方法。此类型包括一个 属性 类型的 CustomData,如下所示:
[Serializable]
public class OnlinePaymentResponse
{
public CustomData CustomData { get; set; }
}
CustomData class 是这样的:
[XmlType(Namespace = XmlConstants.Namespace)]
public class CustomData
{
public CustomData()
{
this.Tables = new List<DynamicTable>();
}
[XmlElement("DynamicTable")]
public List<DynamicTable> Tables { get; set; }
.....
问题是,当我使用 svcutil.exe 生成代理时,不是获取 CustomData 类型,而是获取 DynamicTable 数组。
public partial class OnlinePaymentResponse
{
private DynamicTable[] customDataField;
..........
我一直在玩它,发现如果我删除表 属性 的 XmlElement 属性,它将正确生成代理 class:
public partial class OnlinePaymentResponse
{
private CustomData customDataField;
..........
我不明白为什么会这样。我一直在使用 DataContract、DataMember、XmlRoot 和其他属性,但如果不删除 XmlElement 属性,我就无法获得正确的代理。我在这里错过了什么?
Svcutil 尝试生成 class 不耦合到 .NET。类型,因此数组是可用于其他平台的通用类型。
您可以创建一个具有 CollectionDataContract 属性(更多信息参见此处:CollectionDataContract attribute)并继承自 List,它将生成一个不是数组的复合体。