错误:必须在非泛型静态类中定义扩展方法

时间:2016-06-23 05:46:07

标签: c# linq model-view-controller

enter image description here public class countryController:Controller     //错误:扩展方法必须在非泛型静态类中定义

2 个答案:

答案 0 :(得分:2)

您无法在非静态类extension method

中定义countryController

不允许这样做:

public class MyExtensions
{
    public static void SomeExtension(this String str)
    {

    }
}

允许这样做:

public static class MyExtensions
{
    public static void SomeExtension(this String str)
    {

    }
}

您有一个方法,其第一个参数以this开头,您需要找到它并通过删除this或将其移至static辅助类来修改它。

根据C#规范:

  

10.6.9扩展方法

     

当方法的第一个参数包含this修饰符时,即   方法被认为是一种扩展方法。扩展方法只能   在非泛型的非嵌套静态类中声明。首先   扩展方法的参数除了可以没有修饰符   这个,参数类型不能是指针类型。

答案 1 :(得分:0)

将关键字static添加到类声明:

//这是一个非通用的静态类

public static class yourclass
{
}

创建扩展方法时需要考虑以下几点:

  

定义扩展方法的类必须是非泛型的,   静态和非嵌套

Every extension method must be a static method
  

扩展方法的第一个参数应该使用它   关键字。