我遇到了一个问题,其中旧的win中的某些代码形成应用程序,该应用程序使用来自Web服务的对象的反射来获取字段列表。反射是调用GetFields()。在我的Web服务中的数据对象中,我有以下定义的字段:
public string PropertyAddress1;
public string PropertyAddress2;
public string PropertyCity;
public string PropertyCounty;
public string PropertyState;
在win forms app中存在的当前版本的reference.cs中,字段看起来像这样。
public string PropertyAddress1;
public string PropertyAddress2;
public string PropertyCity;
public string PropertyCounty;
public string PropertyState;
同样的权利?
好吧,我进入了Web服务的课程并添加了另一个字段。然后我进入win窗体应用程序,右键单击并点击更新Web引用。重新生成代码时,reference.cs如下所示:
private string propertyAddress1Field;
private string propertyAddress2Field;
private string propertyCityField;
private string propertyCountyField;
private string propertyStateField;
public string PropertyAddress1 {
get {
return this.propertyAddress1Field;
}
set {
this.propertyAddress1Field = value;
}
}
/// <remarks/>
public string PropertyAddress2 {
get {
return this.propertyAddress2Field;
}
set {
this.propertyAddress2Field = value;
}
}
/// <remarks/>
public string PropertyCity {
get {
return this.propertyCityField;
}
set {
this.propertyCityField = value;
}
}
/// <remarks/>
public string PropertyCounty {
get {
return this.propertyCountyField;
}
set {
this.propertyCountyField = value;
}
}
/// <remarks/>
public string PropertyState {
get {
return this.propertyStateField;
}
set {
this.propertyStateField = value;
}
}
这会抛弃现有代码的行为,因为GetFields()不再返回任何内容。我知道我可以将它交换到GetProperties()但是该类已经定义了我不希望在结果集中返回的属性。我希望引用.cs生成字段作为属性的字段和属性,而不是将字段转换为属性。有没有什么方法可以放置一些数据注释或其他类型的标志来阻止自动生成的reference.cs中的这种行为?
答案 0 :(得分:1)
您可以尝试手动更新reference.cs文件,以使用字段替换属性。如果参考文献已经以某种方式配置为使用字段而不是属性,我愿意打赌以前作者所做的事情。