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

Sam*_*eer 20 .net c# extension-methods compiler-errors

错误在:

public partial class Form2 : Form
Run Code Online (Sandbox Code Playgroud)

可能的原因:

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

尝试(没有静态关键字):

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

小智 35

如果从参数中删除"this",它应该可以工作.

public static IChromosome To<T>(this string text)
Run Code Online (Sandbox Code Playgroud)

应该:

public static IChromosome To<T>(string text)
Run Code Online (Sandbox Code Playgroud)

  • 这有效,但你能解释一下为什么吗?我厌倦了获得解决问题的正确答案,但却无法理解问题或解决方案。 (2认同)

Dav*_*haw 19

包含扩展名的类必须是静态的.你的是:

public partial class Form2 : Form
Run Code Online (Sandbox Code Playgroud)

这不是静态类.

你需要像这样创建一个类:

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

包含扩展方法.