嵌套数组的wcf引用由于其保护级别而无法访问
本文关键字:访问 保护 于其 数组 wcf 引用 嵌套 | 更新日期: 2023-09-27 18:20:31
我必须用复杂的数据结构作为参数来调用第三部分Wcf服务的方法。在VS2012中,我引用了Wsdl。Reference.cs是自动生成的。参数是一个大结构,并且有一些自定义元素的嵌套数组。以下是Reference.cs 代码的一部分
private ProcessTableMachinery[] processDataTableMachineryField;
/// <remarks/>
[System.Xml.Serialization.XmlArrayAttribute(Order=27)]
[System.Xml.Serialization.XmlArrayItemAttribute(IsNullable=false)]
public ProcessTableMachinery[] ProcessDataTableMachinery {
get {
return this.processDataTableMachineryField;
}
set {
this.processDataTableMachineryField = value;
this.RaisePropertyChanged("ProcessDataTableMachinery");
}
}
ProcessTableMachinery是一个类,它包含另一个数组,如下所示。
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.18408")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://blue-group.it/")]
public partial class ProcessTableMachinery : object, System.ComponentModel.INotifyPropertyChanged {
private SingleDataMachinery[] dataTableValuesField;
/// <remarks/>
[System.Xml.Serialization.XmlArrayAttribute(Order=7)]
[System.Xml.Serialization.XmlArrayItemAttribute(IsNullable=false)]
public SingleDataMachinery[] DataTableValues {
get {
return this.dataTableValuesField;
}
set {
this.dataTableValuesField = value;
this.RaisePropertyChanged("DataTableValues");
}
}
public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
protected void RaisePropertyChanged(string propertyName) {
System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
if ((propertyChanged != null)) {
propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
}
}
}
我必须用一些数据初始化dataTableValuesField,如下所示。
objRetTable.ProcessDataTableMachinery[iIndex].dataTableValuesField = new RemoteWebService.SingleDataMachinery[1];
我收到一个错误ProcessTableMachinery.dataTableValuesField由于其保护级别而无法访问。我正在寻找一个变通办法。如果我将dataTableValuesField更改为public到reference.cs,我会得到一个运行时反射错误。我应该修改Wsdl还是自动生成的类?
问题是,当从Wsdl生成字段时,它会生成一个公共属性(getter和setter)和一个私有字段。您必须使用公共属性(DataTableValues),而不是字段(dataTableValuesField
objRetTable.ProcessDataTableMachinery[iIndex].DataTableValues = new RemoteWebService.SingleDataMachinery[1];