6

最近、Enumオブジェクトを値で取得する必要があるケースに遭遇しました (EF CodeFirst を介して保存するため)。これが私のEnumです。

public enum ShipmentStatus {
  New = 0,
  Shipped = 1,
  Canceled = 2
}

したがって、値1ShipmentStatus.Shippedでオブジェクトを取得する必要がありました。

では、どうすればそれを達成できますか?

4

3 に答える 3

11

intこれは、次のいずれかで機能するはずです(値を型にキャストするだけですenum):

int _val = 1;
ShipmentStatus _item = (ShipmentStatus)_val;

その列挙型が定義されていない場合、エラーが発生する可能性があることに注意してください。

于 2013-05-09T14:38:26.573 に答える
1

列挙型とのいくつかの戦いの後、私はこれを作成しました-必要なことを実行するユニバーサルヘルパークラス-値ごとにキーを取得し、さらに重要なことに-任意の列挙型から:

public static class EnumHelpers {

  public static T GetEnumObjectByValue<T>(int valueId) {
    return (T) Enum.ToObject(typeof (T), valueId);
  }

}

したがって、Enumオブジェクトを取得するには、次のShipmentStatus.Shippedオブジェクトを返します。

var enumObject = EnumHelpers.GetEnumObjectByValue<ShipmentStatus>(1);

したがって、基本的に、任意のEnumオブジェクトを使用して、そのキーを値で取得できます。

var enumObject = EnumHelpers.GetEnumObjectByValue<YOUR_ENUM_TYPE>(VALUE);
于 2013-05-09T14:29:27.610 に答える