MVC 控制器中的方法定义
本文关键字:方法 定义 控制器 MVC | 更新日期: 2023-09-27 18:32:31
我需要在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);
}
我有这个错误"扩展方法必须在非泛型静态类中定义"。我已经理解了,但我不明白我必须将方法放在哪里才能在控制器中使用它。谢谢<</p>
正如错误所说,您必须将其放在非泛型静态类中。 像这样:
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);
}
您尝试添加的方法被视为扩展方法。
var dateTime = DateTime.Now;
var nextMonday = dateTime.Next(DayOfWeek.Monday);
扩展方法必须放在public static class ExtensionsMethods
中(类的名称无关紧要)。
可以将此方法添加为非扩展方法(即删除 this
关键字),也可以将其添加到 OurBoxesController
类之外的静态类中。
您必须在静态类中执行此操作。
喜欢这个:
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);
}
}
希望这个帮助
您需要删除方法定义中的this
。通过将this
放在 from 参数之前,您将该方法作为 Extension 方法,并且必须在静态非泛型类中定义
public static DateTime Next(DateTime from, DayOfWeek dayOfWeek)
扩展方法(C# 编程指南)