3

指定された頻度を使用して、2 つのエンドポイント間のすべての日付を取得したいと考えています。だから私はこの単純なコードに基づいてアプローチしています:

for (DateTime date = startDate; date <= endDate; date = date.AddDays(1))
            datesBetween.Add(date);

現在、(上記のように) 日を追加したり、月を追加したり、年を追加したりする必要がある場合があります。FrequencyEnum

したがって、a を使用してコードを 3 回繰り返すこともできますが、 orswitchではなくデリゲート拡張メソッドを割り当てることができるかどうか疑問に思っています。.AddDays.AddMonths.AddYears

むしろ、私は次のようなことをしたいと思います:

for (DateTime date = startDate; date <= endDate; date = date.AddFrequency)
            datesBetween.Add(date);

where.AddFrequencyは、私の頻度に必要な拡張メソッドを定義するデリゲートです。

あるいは、拡張メソッドを使用できず、単純に日付パラメーターを受け取る関数を使用して、必要に応じて返すこともできませんでした。

4

2 に答える 2

1

いいえ、できません。拡張メソッドは、静的クラス内の静的メソッドである必要があります。

AddFrequencyただし、頻度とカウントを取る拡張メソッドを作成することはできます。したがって、次のように書くことができます。

date = date.AddFrequency(FrequencyEnum.Months, 3)
于 2013-04-12T15:19:35.403 に答える