2012-05-02 13 views
17

Error at:metodo di estensione deve essere definito in non generica classe statica

public partial class Form2 : Form 

probabile causa:

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

tentato (senza parola statico):

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

Proprio quando pensavo che _that_ fosse effettivamente un [buon messaggio di errore] (http://blogs.msdn.com/b/ericlippert/archive/2006/07/07/659259.aspx). –

risposta

20

Se si rimuove "questo" dai parametri, dovrebbe funzionare.

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

dovrebbe essere:

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

La classe contenente l'estensione deve essere statica. I vostri sono:

public partial class Form2 : Form 

che non è una classe statica.

È necessario creare una classe in questo modo:

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

per contenere i metodi di estensione.

0

Il mio problema è stato causato perché ho creato un metodo statico all'interno della classe parziale:

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

Quando ho tolto il metodo, l'errore è andato via.

Problemi correlati