如何在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);