我在类名中遇到以下编译错误。
Extension method must be defined in a non-generic static class
我没有使用普通班级。这可能是什么原因。我不知道也不想使用扩展方法。
答案 0 :(得分:42)
根据要求,这是我的评论作为答案:
没有你的代码,我们无能为力。我最好的猜测是你不小心在参数列表中的某处输入了“this”。
答案 1 :(得分:5)
扩展方法的示例
public static class ExtensionMethods {
public static object ToAnOtherObject(this object obj) {
// Your operation here
}
}
答案 2 :(得分:3)
我遇到了同样的问题,并按如下方式解决了问题。我的代码是这样的:
public static class ExtensionMethods
{
public static object ToAnOtherObject(this object obj)
{
// Your operation here
}
}
我将其改为
public static class ExtensionMethods
{
public static object ToAnOtherObject(object obj)
{
// Your operation here
}
}
我删除了方法参数的“this”一词。
答案 3 :(得分:1)
我猜这与你的previous list question有关;如果是这样,我提供的示例是扩展方法,并且将是:
public static class LinkedListUtils { // name doesn't matter, but must be
// static and non-generic
public static IEnumerable<T> Reverse<T>(this LinkedList<T> list) {...}
}
此实用程序类不需要与使用类相同,但扩展方法是如何使用list.Reverse()
如果您不希望它作为扩展方法,您可以将其作为本地静态方法 - 只需从第一个参数中删除“this”:
public static IEnumerable<T> Reverse<T>(LinkedList<T> list) {...}
并用作:
foreach(var val in Reverse(list)) {...}
答案 4 :(得分:0)
创建扩展方法时需要考虑以下几点:
static
static
方法this
关键字。 答案 5 :(得分:0)
发布代码怎么样?扩展方法通过在静态方法的第一个参数之前声明。由于您不会使用扩展方法,我怀疑您不小心使用this
启动了参数列表。
寻找类似的东西:
void Method(this SomeType name)
{
}