La méthode d'Extension doit être définie dans une classe statique non générique

Erreur:

public partial class Form2 : Form

cause Probable:

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

Tenté (sans le mot-clé static):

public IChromosome To<T>(this string text)
{
    return (IChromosome)Convert.ChangeType(text, typeof(T));
}
17
demandé sur abatishchev 2012-05-02 14:49:31

4 réponses

si vous supprimez "ceci" de vos paramètres, cela devrait fonctionner.

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

devrait être:

public static IChromosome To<T>(string text)
28
répondu imPrettyAwesomeLikeThat 2013-10-21 21:53:24

La classe contenant l'extension doit être statique. Les vôtres sont dans:

public partial class Form2 : Form

qui n'est pas une classe statique.

vous devez créer une classe comme ceci:

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

pour contenir les méthodes d'extension.

18
répondu DaveShaw 2012-05-02 10:54:22

parce que votre classe containing n'est pas statique, la méthode D'Extension devrait être à l'intérieur d'une classe statique. Cette classe devrait être non imbriquées. Méthodes D'Extension (C # Guide De Programmation)

1
répondu Habib 2012-05-02 10:52:17

mon problème a été causé parce que j'ai créé une méthode statique à l'intérieur de la classe partielle:

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

Quand j'ai enlevé la méthode, l'erreur a disparu.

1
répondu Kobbi Gal 2018-01-08 17:33:09