

自分が作ったのではないDLLで

[code]

    [Flags]
    enum Flags {
        Flag0,
        Flag1,
        Flag2,
    }
    
[/code]

みたいなenumが定義されていた時に、Flag0とかFlag1では使いにくいのでMonday,
Tuesdayみたいな意味のある別名を付けたいのですが、どうしたらいいでしょうか。


CC BY-SA 3.0
2016-08-12T13:16:51.763
28222
2016-08-12T13:55:28.010
8266
question
c#
C#でenumに別名をつけるにはどうしたらいいでしょうか


元の型に列挙値を追加することはできません。

定数クラスを用意するか、

[code]

    public static class NamedFlags
    {
        public static readonly Flags Sunday = Flags.Flag0;
        public static readonly Flags Monday = Flags.Flag1;
        public static readonly Flags Tuesday = Flags.Flag2;
    }
    
[/code]

別の列挙型を定義して相互に変換することになるかと思います。

[code]

    [Flags]
    public enum NamedFlags
    {
        Sunday =  Flags.Flag0,
        Monday = Flags.Flag1,
        Tuesday = Flags.Flag2,
    }
    
    public static class NamedFlagsExtension
    {
        public static NamedFlags ToNamedFlags(this Flags value)
            => (NamedFlags)value;
    
        public static Flags ToFlags(this NamedFlags value)
            => (Flags)value;
    }
    
[/code]

ただし後者の方法は元の列挙値が変更された場合に再コンパイルしないと正しく動作しません。


CC BY-SA 3.0
2016-08-12T13:55:28.010
28223
2016-08-12T13:55:28.010
5750
28222
answer