特定の年 (2016 年) のレコードを処理している場合、要素をシリアル化するときに要素からプレフィックスを除外する必要がある状況に遭遇しました。ただし、前年 (2015 年) のレコードを処理している場合は、このプレフィックスを含める必要があります。
例:
2015 IRS スキーマでは、CountryNm
およびForeignProvinceNm
フィールドがirs:CountryNm
およびirs:ForeignProvinceNm
要素の子要素として定義されていForeignAddressGrpType
ます。
class で次のように定義しています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 はスキーマ定義を更新し、これら 2 つのフィールドからプレフィックスを削除しました。
質問:
TY2016 データと TY2015 データを処理するときに、これらのフィールドからプレフィックスを条件付きで削除するにはどうすればよいですか?
IRS は、TY2015 データの送信には 2015 スキーマを使用する必要があることを示す指示を出しましたが、TY2016 の新しいレコードの送信には 2016 スキーマを使用する必要があります。
クラスの 2 つ (またはそれ以上) のバージョンを維持する必要がありAddress
ますか?