しばやん雑記

ASP.NET とメイドさんが大好きなフリーランスのプログラマーのブログ

Enum と XmlSerializer

public enum Key
{
    Return,
    Enter = Return,
}

のように Return と Enter に同じ値を割り当てたときに、XmlSerializer を使ってシリアライズするとどうなるか。試したところ、先に書かれたものを優先しているようです。
System.Windows.Input.Key とかをシリアライズすると Return と Enter や PageDown と Next など同じ値が割り当てられているので、Key.Enter と書いていてもシリアライズの結果は Return になってたりします。*1
でも、デシリアライズ時には Return と Enter のどちらでも受け付けてくれるので、内部でこっそりと仕様変更したときなど使えそうです。というか誤魔化しのために使いました(汗

*1:Enum.GetName の仕様上そうなってるだけだと思いますが。