如何在c#中指定委托扩展方法?

如何在c#中指定委托扩展方法?,c#,delegates,extension-methods,C#,Delegates,Extension Methods,我希望使用提供的频率获取两个端点之间的所有日期。因此,我的方法基于以下简单的代码: for (DateTime date = startDate; date <= endDate; date = date.AddDays(1)) datesBetween.Add(date); 其中.AddFrequency是定义我的频率所需扩展方法的委托 或者,我可以不使用扩展方法,只需使用带有日期参数的函数并根据需要返回即可。不,您不能这样做。扩展方法必须是静态类中的静态方法

我希望使用提供的频率获取两个端点之间的所有日期。因此,我的方法基于以下简单的代码:

for (DateTime date = startDate; date <= endDate; date = date.AddDays(1))
            datesBetween.Add(date);
其中
.AddFrequency
是定义我的频率所需扩展方法的委托


或者,我可以使用扩展方法,只需使用带有日期参数的函数并根据需要返回即可。

不,您不能这样做。扩展方法必须是静态类中的静态方法

但是您可以编写一个
AddFrequency
扩展方法,该方法接受一个频率和一个计数。所以你可以写:

date = date.AddFrequency(FrequencyEnum.Months, 3)

我想你想要一个
Func

Func updater=d=>d.AddFrequency(Frequency.Month);
对于(DateTime date=startDate;date-date.AddDays(1))

.TakeWhile(日期=>日期
var freq=Frequency.Year;
日期=date.AddFrequency(freq)
?@leppie没什么,这可能也行得通,但将扩展方法中的特定frequencyEnum指定为DateTime似乎是错误的……我喜欢这个解决方案,它基本上将我的
开关
卸载到另一个方法,并避免我重复
for
循环
date = date.AddFrequency(FrequencyEnum.Months, 3)
Func<DateTime, DateTime> updater = d => d.AddFrequency(Frequency.Month);

for (DateTime date = startDate; date <= endDate; date = updater(date))
     datesBetween.Add(date);
var datesBetween = startDate.Generate(date => date.AddDays(1))
                            .TakeWhile(date => date <= endDate);