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

C# 扩展方法必须在非泛型静态类中定义,c#,.net,compiler-errors,extension-methods,C#,.net,Compiler Errors,Extension Methods,错误位于: public partial class Form2 : Form 可能原因: public static IChromosome To<T>(this string text) { return (IChromosome)Convert.ChangeType(text, typeof(T)); } publicstaticichromosometo(此字符串文本) { return(IChromosome)Convert.ChangeType(text,ty

错误位于:

public partial class Form2 : Form
可能原因:

public static IChromosome To<T>(this string text)
{
    return (IChromosome)Convert.ChangeType(text, typeof(T));
}
publicstaticichromosometo(此字符串文本)
{
return(IChromosome)Convert.ChangeType(text,typeof(T));
}
尝试(没有静态关键字):

public IChromosome To(此字符串文本)
{
return(IChromosome)Convert.ChangeType(text,typeof(T));
}

包含扩展的类必须是静态的。您的地址是:

public partial class Form2 : Form
这不是一个静态类

您需要创建这样一个类:

static class ExtensionHelpers
{
    public static IChromosome To<T>(this string text) 
    { 
        return (IChromosome)Convert.ChangeType(text, typeof(T)); 
    } 
}
静态类扩展助手
{
公共静态IChromosome To(此字符串文本)
{ 
return(IChromosome)Convert.ChangeType(text,typeof(T));
} 
}

包含扩展方法。

因为包含类不是静态的,所以扩展方法应该在静态类中。该类也应该是非嵌套的

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

public static IChromosome To<T>(this string text)
publicstaticichromosometo(此字符串文本)
应该是:

public static IChromosome To<T>(string text)
publicstaticichromosometo(字符串文本)

导致我的问题的原因是我在分部类中创建了一个静态方法:

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;
    }
} 

当我删除该方法时,错误消失了。

就在我认为这实际上是一个错误的时候。这是有效的,但你能解释为什么吗!?我厌倦了得到解决问题的正确答案,但不理解问题或解决方案。
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;
    }
}