2012-05-02 9 views
17

Error en:método de extensión se debe definir en no genérico clase estática

public partial class Form2 : Form 

causa probable:

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

Intento (sin palabra clave estática):

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

Justo cuando pensaba _que_en realidad era un [buen mensaje de error] (http://blogs.msdn.com/b/ericlippert/archive/2006/07/07/659259.aspx). –

Respuesta

20

Si elimina "esto" de sus parámetros debería funcionar.

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

debería ser:

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

La clase que contiene la extensión debe ser estático. El suyo está en:

public partial class Form2 : Form 

que no es una clase estática.

Es necesario crear una clase de esta manera:

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

para contener los métodos de extensión.

0

Mi problema fue causado porque creé un método estático dentro de la clase parcial:

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

Cuando quité el método, el error fue.

Cuestiones relacionadas