我需要在MVC控制器中实现一个方法。控制器是
public class OurBoxesController : Controller
和方法
public static DateTime Next(this DateTime from, DayOfWeek dayOfWeek)
{
int start = (int)from.DayOfWeek;
int target = (int)dayOfWeek;
if (target <= start)
target += 7;
return from.AddDays(target - start);
}
我有这个错误“扩展方法必须在非泛型静态类中定义”。我理解,但我不明白我必须把方法用在控制器中。谢谢
答案 0 :(得分:2)
正如错误所述,您必须将其置于非通用静态类中。像这样:
public static class DateTimeExtensions
{
public static DateTime Next(this DateTime from, DayOfWeek dayOfWeek)
{
int start = (int)from.DayOfWeek;
int target = (int)dayOfWeek;
if (target <= start)
target += 7;
return from.AddDays(target - start);
}
}
或者,如果您希望该方法位于您的控制器中,则它不能作为扩展方法:
public static DateTime Next(DateTime from, DayOfWeek dayOfWeek)
{
int start = (int)from.DayOfWeek;
int target = (int)dayOfWeek;
if (target <= start)
target += 7;
return from.AddDays(target - start);
}
答案 1 :(得分:1)
您尝试添加的方法被视为extension method。
var dateTime = DateTime.Now;
var nextMonday = dateTime.Next(DayOfWeek.Monday);
扩展方法必须放在public static class ExtensionsMethods
中(类的名称无关紧要)。
您可以将此方法添加为非扩展方法(即删除this
关键字),也可以将其添加到OurBoxesController
类之外的静态类中。
答案 2 :(得分:0)
您必须在静态类中执行此操作。
像这样:
static class ExtensionHelper
{
public static DateTime Next(this DateTime from, DayOfWeek dayOfWeek)
{
int start = (int)from.DayOfWeek;
int target = (int)dayOfWeek;
if (target <= start)
target += 7;
return from.AddDays(target - start);
}
}
希望这个帮助
答案 3 :(得分:0)
您需要在方法定义中删除this
。通过将this
放在 参数之前,您将该方法作为扩展方法,并且必须在静态非泛型类
public static DateTime Next(DateTime from, DayOfWeek dayOfWeek)