扩展方法必须在非泛型静态类中定义(Extension method must be defined

2019-07-29 05:52发布

错误的:

public partial class Form2 : Form

可能的原因:

public static IChromosome To<T>(this string text)
{
    return (IChromosome)Convert.ChangeType(text, typeof(T));
}

尝试(没有static关键字):

public IChromosome To<T>(this string text)
{
    return (IChromosome)Convert.ChangeType(text, typeof(T));
}

Answer 1:

如果您删除“这个”从参数它应该工作。

public static IChromosome To<T>(this string text)

应该:

public static IChromosome To<T>(string text)


Answer 2:

包含扩展的类必须是静态的。 您现在的位置:

public partial class Form2 : Form

这是不是一个静态类。

您需要创建一个类,如下所示:

static class ExtensionHelpers
{
    public static IChromosome To<T>(this string text) 
    { 
        return (IChromosome)Convert.ChangeType(text, typeof(T)); 
    } 
}

为了遏制扩展方法。



Answer 3:

因为你的包含类也不是一成不变的,扩展方法应该是一个静态类中。 这个类应该不嵌套为好。 扩展方法(C#编程指南)



Answer 4:

我的问题造成的,因为我创造了局部类中的静态方法:

public partial class MainWindow : Window{

......

public static string TrimStart(this string target, string trimString)
{
    string result = target;

    while (result.StartsWith(trimString)){
    result = result.Substring(trimString.Length);
    }

    return result;
    }
} 

当我删除的方法,错误就走开了。



文章来源: Extension method must be defined in non-generic static class