私は多くのことを検索して試しましたが、私は本当に完全に満足していません.
古いプロジェクトを VB.Net から C# に変換しているときに、2 つの言語間の動作が大きく異なり、対処しないと C# のロジックが壊れることがわかりました。
次のような列挙型を考えてみましょう:
public enum TestEnum
{
Val1 = 1,
Val2 = 2
}
私はVB.Netにこのコードを持っています
// Will contain 1
txthMyHiddenField.Value = TestEnum1.Val1
また、
// Will contain ~/Something?var=1
Dim Url As String = "~/Something?var=" & TestEnum1.Val1
C# では、最初のケースは"~/Something?var= "Val1
で、2 番目のケースは "~/Something?var= Val1
"です。
これまでのところ、多くのコードを再設計せずに思いついた解決策は、どこにでも行って次のようなことを行うことです。
= myEnum.ToString("d");
// Or
= ((int)myEnum).ToString();
// Or an extension.
列挙型の「クラス」を作成することも検討しましたが、すべての switch ステートメントを変更する必要があり、これはさらに悪い解決策です。
何か不足していますか?よりクリーンな方法はありますか?