XSD 生成的 Class 的 c# ToString 方法
c# ToString method for XSD Generated Class
我有一个使用 XSD.exe 生成的 class,但我想为该对象提供一个 ToString 方法,以便我可以将它们添加到列表框等。我可能必须重新生成这些 classes 将来来自 XSD 文件,所以我不想手动覆盖生成的 class 上的方法。有没有办法在不创建新 class 的情况下解决这个问题?
我生成的 class 看起来像这样;我想要一个 ToString 方法来显示一些 class 变量而不是它当前正在做的 class 的名称。
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.1432")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
public partial class cardOnFileResponse {
private string paymentInstrumentRefField;
private string partyIdField;
private string friendlyNameField;
private string cardholderNameField;
private string maskedPANField;
private string startDateField;
private string expiryDateField;
private string issueNoField;
private cardType cardTypeField;
private bool cardTypeFieldSpecified;
/// <remarks/>
public string paymentInstrumentRef {
get {
return this.paymentInstrumentRefField;
}
set {
this.paymentInstrumentRefField = value;
}
}
/// <remarks/>
public string partyId {
get {
return this.partyIdField;
}
set {
this.partyIdField = value;
}
}
/// <remarks/>
public string friendlyName {
get {
return this.friendlyNameField;
}
set {
this.friendlyNameField = value;
}
}
/// <remarks/>
public string cardholderName {
get {
return this.cardholderNameField;
}
set {
this.cardholderNameField = value;
}
}
/// <remarks/>
public string maskedPAN {
get {
return this.maskedPANField;
}
set {
this.maskedPANField = value;
}
}
/// <remarks/>
public string startDate {
get {
return this.startDateField;
}
set {
this.startDateField = value;
}
}
/// <remarks/>
public string expiryDate {
get {
return this.expiryDateField;
}
set {
this.expiryDateField = value;
}
}
/// <remarks/>
public string issueNo {
get {
return this.issueNoField;
}
set {
this.issueNoField = value;
}
}
/// <remarks/>
public cardType cardType {
get {
return this.cardTypeField;
}
set {
this.cardTypeField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlIgnoreAttribute()]
public bool cardTypeSpecified {
get {
return this.cardTypeFieldSpecified;
}
set {
this.cardTypeFieldSpecified = value;
}
}
}
由于它是作为部分 class 生成的,因此您可以创建一个单独的部分 class(不是自动生成的),您可以在其中覆盖 ToString()。
例如
public partial class cardOnFileResponse
{
public override string ToString()
{
return String.Format("Response: {0} {1}", this.friendlyNameField, this.cardholderNameField);
}
}
它已经被声明为部分 class 所以在一个单独的文件中定义 ToString():
public partial class cardOnFileResponse {
public new string ToString()
{
string retn="";
retn += ....
return retn;
}
}
当然,如果生成的代码删除或更改了您在 ToString() 实现中使用的字段,您可能需要更新它。
我有一个使用 XSD.exe 生成的 class,但我想为该对象提供一个 ToString 方法,以便我可以将它们添加到列表框等。我可能必须重新生成这些 classes 将来来自 XSD 文件,所以我不想手动覆盖生成的 class 上的方法。有没有办法在不创建新 class 的情况下解决这个问题?
我生成的 class 看起来像这样;我想要一个 ToString 方法来显示一些 class 变量而不是它当前正在做的 class 的名称。
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.1432")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
public partial class cardOnFileResponse {
private string paymentInstrumentRefField;
private string partyIdField;
private string friendlyNameField;
private string cardholderNameField;
private string maskedPANField;
private string startDateField;
private string expiryDateField;
private string issueNoField;
private cardType cardTypeField;
private bool cardTypeFieldSpecified;
/// <remarks/>
public string paymentInstrumentRef {
get {
return this.paymentInstrumentRefField;
}
set {
this.paymentInstrumentRefField = value;
}
}
/// <remarks/>
public string partyId {
get {
return this.partyIdField;
}
set {
this.partyIdField = value;
}
}
/// <remarks/>
public string friendlyName {
get {
return this.friendlyNameField;
}
set {
this.friendlyNameField = value;
}
}
/// <remarks/>
public string cardholderName {
get {
return this.cardholderNameField;
}
set {
this.cardholderNameField = value;
}
}
/// <remarks/>
public string maskedPAN {
get {
return this.maskedPANField;
}
set {
this.maskedPANField = value;
}
}
/// <remarks/>
public string startDate {
get {
return this.startDateField;
}
set {
this.startDateField = value;
}
}
/// <remarks/>
public string expiryDate {
get {
return this.expiryDateField;
}
set {
this.expiryDateField = value;
}
}
/// <remarks/>
public string issueNo {
get {
return this.issueNoField;
}
set {
this.issueNoField = value;
}
}
/// <remarks/>
public cardType cardType {
get {
return this.cardTypeField;
}
set {
this.cardTypeField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlIgnoreAttribute()]
public bool cardTypeSpecified {
get {
return this.cardTypeFieldSpecified;
}
set {
this.cardTypeFieldSpecified = value;
}
}
}
由于它是作为部分 class 生成的,因此您可以创建一个单独的部分 class(不是自动生成的),您可以在其中覆盖 ToString()。 例如
public partial class cardOnFileResponse
{
public override string ToString()
{
return String.Format("Response: {0} {1}", this.friendlyNameField, this.cardholderNameField);
}
}
它已经被声明为部分 class 所以在一个单独的文件中定义 ToString():
public partial class cardOnFileResponse {
public new string ToString()
{
string retn="";
retn += ....
return retn;
}
}
当然,如果生成的代码删除或更改了您在 ToString() 实现中使用的字段,您可能需要更新它。