列挙型を int として取得したいのですが、初期化子が適用されている場合に限ります。これにより、値が明示的に定義されており、単なるデフォルト値ではないことがわかります。これは、定義された int コードでマッピングを表すために列挙型を使用しているためです。列挙型でこれを行う方法はありますか、それとも辞書のようなものを使用する必要がありますか?
ここに例があります - 私は次のマッピングを持っています:
リンゴ = 1、バナナ = 2、ナシ = 4、パイナップル = 7
列挙型が
public enum Fruit
{
Apples,
Bananas,
Pears,
Pineapples
}
列挙型の 1 の値は、リンゴではなくバナナに対応するため、int 値を取得しようとはしません。もっと明確にする必要がある場合はお知らせください。
アップデート:
null 許容列挙型を使用して、値が設定されている (または不明な要素) かどうかを確認しますが、ここで求めているのはそれではありません。うまく説明できていないので、もう一度やり直します。
何も知らない列挙型を取得し、基になる int を取得して、それを使用して何かを実行できるようにしたいと考えています。私が気にする唯一のことは、実際のコードが定義されていることを示しているため、列挙型が初期化されたことです。ヌルでも構いません。それは私がチェックすることの1つです。しかし、null でない場合は、int コードが明示的に定義されていることを確認したいと思います。コード 0 は、未定義であることを意味する場合でも、元のマッピングで指定されている限り、完全に受け入れられます。
別の更新:
Microsoftのドキュメントからこの「初期化済み」という用語を取得しましたが、混乱を招いていると思います。私が意味したのは、基になる int の値が明示的に定義されている列挙型です。すなわち、
public enum MyEnum
{
One = 1,
Two = 2,
Three = 3
}
そうでないものとは対照的に。すなわち、
public enum MyEnum
{
One,
Two,
Three
}
これらをデフォルト値が設定されていると呼んでいたことも混乱を招いていたと思います。これは、デフォルトで最初の要素が設定されている null 非許容の列挙型と混同しやすいものです。
私がこれを使用している方法は、リフレクションを使用して、特定のカスタム属性を持つプロパティの値を取得するメソッドがあることです。私の目的のために、コードが明示的に定義されている列挙型から値を取得したいだけです。そうでなければ、int 値にビジネス上の意味があるとは思えません。