私は、ユーザが設定の一部として選択できるオプションを記述した列挙型を持っています。これはXMLにシリアライズされます。名前の1つが理想的ではなく、名前を変更したいが、古い設定ファイルの逆シリアル化もサポートしています。私は名前を変更したが、このように、以前のシリアル化された名前を指定することができます知っているXMLにシリアライズされたenumの名前を変更することはできますが、以前の名前をサポートし続けますか?
public enum Options
{
Odd,
NonOdd // rename to 'Even'
}
:たとえば
public enum Options
{
Odd,
[XmlEnum(Name = "NonOdd")]
Even
}
これは動作しますが、それはXMLファイルでNonOdd
を使用し続け、それは私がしたくないことです。
現在の名前と廃止予定の列挙名の逆シリアル化をサポートする方法はありますか?現在の名前にシリアル化しますか?
[XmlElementフィールドの複数の名前を定義する方法](http://stackoverflow.com/questions/24707399/how-to-define-multiple-names-for-xmlelement-field) – CoolBots
[ XmlElementフィールドの複数の名前を定義する方法?](http://stackoverflow.com/q/24707399/3744182)。残念ながら、未知のenum値に対して 'UnknownNode'、' UnknownElement'、 'UnknownAttribute'、' UnreferencedObject'イベントは発生していないようです。したがって、このソリューションはここでは機能しません。代わりに、新しい列挙値を持つ[XmlSerializer](http://stackoverflow.com/q/1621306/3744182)または[列挙値にXML値を逆シリアル化するときの余分な空間の処理](http://stackoverflow.com/a/)のソリューション31253230/3744182)が最善の方法かもしれません。 – dbc