C# 派生类的XMLSerialization
我有两个班,一个是基班C# 派生类的XMLSerialization,c#,.net,serialization,C#,.net,Serialization,我有两个班,一个是基班 public abstract class BaseBon : BaseRecord { public BaseBon(Nat recordIndicator) : base(recordIndicator) { } /// <summary> /// Waehrungkennzeichen - CurrencyCode /// </summary> protected FixedStrin
public abstract class BaseBon : BaseRecord
{
public BaseBon(Nat recordIndicator) : base(recordIndicator)
{
}
/// <summary>
/// Waehrungkennzeichen - CurrencyCode
/// </summary>
protected FixedString m_CurrencyCode = new FixedString(3);
public String CurrencyCode
{
get { return m_CurrencyCode.Value; }
set { m_CurrencyCode.Value = value; }
}
}
错误类型为System.InvalidOperationException。
我只能给你一个简短的翻译,因为我只有德语翻译。
该错误表明我屏蔽了基类的属性CurrencyCode,并且应该使用xmlementAttribute为其指定一个新名称。我该怎么做?因为我已经准备好使用
xmlement
,所以我认为类型不匹配的错误源是:返回CurrencyCode?和at属性货币代码。您必须在两种情况下使用相同的类型。更改了它,但它不起作用。问题是您的公共新CurrencyCode
,我不明白您为什么不能给它一个新名称,因为它显然与现有定义的名称冲突。这就产生了一个问题,你的类是否真的基于你的BaseBon。为什么不提供一个名为EnumCurrencyCode的新属性,并保持现有序列化不变?@Icepickle源代码所属的这个库是另一种语言的端口。因此,当涉及到文档时,该类是基于BaseBon的。目前我正在使用您的方法,但我想知道是否可以简单地避免;)我认为类型不匹配的错误来源是:返回CurrencyCode?和at属性货币代码。您必须在两种情况下使用相同的类型。更改了它,但它不起作用。问题是您的公共新CurrencyCode
,我不明白您为什么不能给它一个新名称,因为它显然与现有定义的名称冲突。这就产生了一个问题,你的类是否真的基于你的BaseBon。为什么不提供一个名为EnumCurrencyCode的新属性,并保持现有序列化不变?@Icepickle源代码所属的这个库是另一种语言的端口。因此,当涉及到文档时,该类是基于BaseBon的。目前我正在使用您的方法,但我想知道是否可以简单地避免;)
/// <summary>
/// Waehrungkennzeichen - CurrencyCode
/// </summary>
private new FixedInt m_CurrencyCode = new FixedInt(1);
[XmlElement("CurrencyCode_Small",typeof(CurrencyCode?))]
public new CurrencyCode? CurrencyCode
{
get
{
CurrencyCode? val = null;
Array values = Enum.GetValues(typeof(CurrencyCode));
foreach (CurrencyCode value in values)
{
if (value.GetValue().Equals(m_CurrencyCode.Value))
{
val = value;
break;
}
}
return val;
}
set
{
if (!value.Equals(null))
{
m_CurrencyCode.Value = (int)value;
}
}
}