1. ホーム
  2. c#

[解決済み] Enumに拡張メソッドを追加する方法

2022-04-26 11:01:48

質問

次のようなEnumのコードを持っています。

enum Duration { Day, Week, Month };

このEnumに拡張メソッドを追加することはできますか?

どのように解決するのですか?

これによると サイト :

拡張メソッドは、既存のクラスのメソッドを、あなたのチームの他の人が実際に発見して使用できるような方法で記述する方法を提供します。列挙型は他のクラスと同じであるため、拡張できることはそれほど驚くことではありません。

enum Duration { Day, Week, Month };

static class DurationExtensions 
{
  public static DateTime From(this Duration duration, DateTime dateTime) 
  {
    switch (duration) 
    {
      case Day:   return dateTime.AddDays(1);
      case Week:  return dateTime.AddDays(7);
      case Month: return dateTime.AddMonths(1);
      default:    throw new ArgumentOutOfRangeException("duration");
    }
  }
}

一般的に列挙型はベストな選択ではないと思いますが、少なくともこれでswitch/if処理の一部を一元化し、より良いものができるまでそれらを少し抽象化することができます。値が範囲内であることをチェックすることも忘れないでください。

詳細はこちら こちら をMicrosft MSDNでご覧ください。