我遇到过一种情况,当我处理特定年份(2016)的记录时,我需要在序列化元素时从元素中排除前缀。但是,如果我正在处理上一年(2015年)的记录,则应包括此前缀。
示例:
2015年IRS模式将CountryNm
和ForeignProvinceNm
字段定义为irs:CountryNm
和irs:ForeignProvinceNm
作为ForeignAddressGrpType
元素的子元素。
我在课程Address
中定义了以下内容。当我序列化这些属性时,我会按预期获得irs:CountryNm
和irs:ForeignProvinceNm
。
// IRS_Namespace.commonNamespace uses the prefix 'irs'.
[XmlElement(Namespace = IRS_Namespace.commonNamespace)]
public string CountryNm
{
get { return _CountryName; }
set { _CountryName = value.Trim(); }
}
[XmlElement(Namespace = IRS_Namespace.commonNamespace)]
public string ForeignProvinceNm
{
get { return _ForeignProvinceName; }
set { _ForeignProvinceName = value.Trim(); }
}
如果我正确解释2016年税务年度的更改文档,IRS会更新其架构定义并从这两个字段中删除前缀。
问题:
在处理TY2016数据与TY2015数据时,如何有条件地从这些字段中删除前缀?
IRS已指示发送任何TY2015数据的州必须使用2015架构,而为TY2016发送的新记录必须使用2016架构。
我是否需要维护Address
类的两个(或更多版本)版本?