我是C#的新手并且从朋友那里得到了一个项目,当我尝试编译它时我遇到了这个错误:
Extension method must be defined in a non-generic static class
代码如下所示:
public partial class _Default : System.Web.UI.Page {
可能是一个非常简单的问题,但我无法弄明白。
答案 0 :(得分:0)
您可能正在尝试在该课程中定义extension method。
扩展方法标有static
修饰符,第一个参数标有this
修饰符,例如:
public static void Method(this string arg) {}
如果您错误地添加了this
修饰符,只需将其删除即可使其成为常规静态方法。
如果您是故意这样做的,请将方法声明移动到静态非泛型非嵌套类。
答案 1 :(得分:0)
嗯,它告诉你到底出了什么问题 - 你不能把扩展方法(第一个参数前面带有this
的静态方法)放在非泛型静态类之外的任何东西上。查找第一个参数前面有this
的方法(或方法),并将它们移动到一个新的非泛型静态类:
public static class SomeExtensions
{
// Extension methods go here, e.g.
public static void SomeMethod(this SomeClass firstParam, int secondParam)
{
// ...
}
}
答案 2 :(得分:0)
您在方法签名中使用this
关键字,表示它是extension method。
您应该创建一个static
类来包含这些方法。签名必须是这样的:
public static class PageExtensionMethods
{
public static void SomeMethod(this SomeType s)
{ }
}
但请确保您真的有意使用扩展方法。如果它只是您想要调用的方法,那么它实际上不一定是扩展方法。然后删除this
关键字。
答案 3 :(得分:0)
只要做,因为编译器想要应该完成:
// Public static non generic class (exactly what compiler wants)
public static class PageExtensions {
...
// Your extension method for System.Web.UI.Page
public static void MyExtensionMethod(this System.Web.UI.Page value) {
...
}
}