如何将列表转换为复杂参数数组
How do I Convert a List to Complex parameter array
我有自己的服务引用,我正在使用命名的 List<> 调用它。此列表将名称非常糟糕的属性转换为有用的东西。我怎样才能以一种它能理解的方式传回这个列表?
我正在从客户端取回数据,但我不知道如何初始化它以按照它期望的方式发送到不同的 Web 服务。
.NET 生成的可怕命名参数:
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute("p2PARM", Order=4)]
public P2PARM[] p2PARM {
get {
return this.p2PARMField;
}
set {
this.p2PARMField = value;
this.RaisePropertyChanged("p2PARM");
}
}
它的属性也由 .NET 生成:
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.34230")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://update_data/xsd")]
public partial class P2PARM : object, System.ComponentModel.INotifyPropertyChanged {
private string p2A0STField;
private string p2A5TXField;
private decimal p2G9NCField;
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Order=0)]
public string p2A0ST {
get {
return this.p2A0STField;
}
set {
this.p2A0STField = value;
this.RaisePropertyChanged("p2A0ST");
}
}
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Order=1)]
public string p2A5TX {
get {
return this.p2A5TXField;
}
set {
this.p2A5TXField = value;
this.RaisePropertyChanged("p2A5TX");
}
}
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Order=2)]
public decimal p2G9NC {
get {
return this.p2G9NCField;
}
set {
this.p2G9NCField = value;
this.RaisePropertyChanged("p2G9NC");
}
}
我可以成功将数据下拉到 dataList 中:
List<Models.UpdateData.InputData.Data> dataList = input.DataList;
SVC_UpdateData.P2PARM[] p2Input = new SVC_UpdateData.P2PARM[dataList.Count];
这是我尝试设置变量的地方,但 p2Input 为空,我不知道下一步该去哪里..
for (int i=0; i < dataList.Count; i++)
{
p2Input[i].p2A0ST = dataList[i].NamedField1;
p2Input[i].p2A5TX = dataList[i].NamedField2;
p2Input[i].p2G9NC = dataList[i].NamedField3;
}
这是我要发送到的 WSDL 的 XML:
<xs:complexType name="P2PARM">
<xs:sequence>
<xs:element name="p2A0ST" type="xs:string" />
<xs:element name="p2A5TX" type="xs:string" />
<xs:element name="p2G9NC" type="xs:decimal" />
</xs:sequence>
</xs:complexType>
这是我的模型,其中包含我的列表:
[DataContract]
public class InputData
{
[DataContract]
public class Data
{
[DataMember]
public string NamedField1 { get; set; }
[DataMember]
public string NamedField2 { get; set; }
[DataMember]
public decimal NamedField3 { get; set; }
}
[DataMember]
public List<Data> DataList { get; set; }
}
p2Input
不是空的,它是一个数组,你初始化了它。但是你还需要实例化数组中的每个元素:
for (int i=0; i < dataList.Count; i++)
{
p2Input[i] = new SVC_UpdateData.P2PARM();
p2Input[i].p2A0ST = dataList[i].NamedField1;
// ...
}
我有自己的服务引用,我正在使用命名的 List<> 调用它。此列表将名称非常糟糕的属性转换为有用的东西。我怎样才能以一种它能理解的方式传回这个列表?
我正在从客户端取回数据,但我不知道如何初始化它以按照它期望的方式发送到不同的 Web 服务。
.NET 生成的可怕命名参数:
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute("p2PARM", Order=4)]
public P2PARM[] p2PARM {
get {
return this.p2PARMField;
}
set {
this.p2PARMField = value;
this.RaisePropertyChanged("p2PARM");
}
}
它的属性也由 .NET 生成:
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.34230")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://update_data/xsd")]
public partial class P2PARM : object, System.ComponentModel.INotifyPropertyChanged {
private string p2A0STField;
private string p2A5TXField;
private decimal p2G9NCField;
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Order=0)]
public string p2A0ST {
get {
return this.p2A0STField;
}
set {
this.p2A0STField = value;
this.RaisePropertyChanged("p2A0ST");
}
}
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Order=1)]
public string p2A5TX {
get {
return this.p2A5TXField;
}
set {
this.p2A5TXField = value;
this.RaisePropertyChanged("p2A5TX");
}
}
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Order=2)]
public decimal p2G9NC {
get {
return this.p2G9NCField;
}
set {
this.p2G9NCField = value;
this.RaisePropertyChanged("p2G9NC");
}
}
我可以成功将数据下拉到 dataList 中:
List<Models.UpdateData.InputData.Data> dataList = input.DataList;
SVC_UpdateData.P2PARM[] p2Input = new SVC_UpdateData.P2PARM[dataList.Count];
这是我尝试设置变量的地方,但 p2Input 为空,我不知道下一步该去哪里..
for (int i=0; i < dataList.Count; i++)
{
p2Input[i].p2A0ST = dataList[i].NamedField1;
p2Input[i].p2A5TX = dataList[i].NamedField2;
p2Input[i].p2G9NC = dataList[i].NamedField3;
}
这是我要发送到的 WSDL 的 XML:
<xs:complexType name="P2PARM">
<xs:sequence>
<xs:element name="p2A0ST" type="xs:string" />
<xs:element name="p2A5TX" type="xs:string" />
<xs:element name="p2G9NC" type="xs:decimal" />
</xs:sequence>
</xs:complexType>
这是我的模型,其中包含我的列表:
[DataContract]
public class InputData
{
[DataContract]
public class Data
{
[DataMember]
public string NamedField1 { get; set; }
[DataMember]
public string NamedField2 { get; set; }
[DataMember]
public decimal NamedField3 { get; set; }
}
[DataMember]
public List<Data> DataList { get; set; }
}
p2Input
不是空的,它是一个数组,你初始化了它。但是你还需要实例化数组中的每个元素:
for (int i=0; i < dataList.Count; i++)
{
p2Input[i] = new SVC_UpdateData.P2PARM();
p2Input[i].p2A0ST = dataList[i].NamedField1;
// ...
}