c# - metodos - El método de extensión se debe definir en una clase estática no genérica
metodos anidados c# (4)
Error en:
public partial class Form2 : Form
Causa probable:
public static IChromosome To<T>(this string text)
{
return (IChromosome)Convert.ChangeType(text, typeof(T));
}
Intentado (sin palabra clave estática):
public IChromosome To<T>(this string text)
{
return (IChromosome)Convert.ChangeType(text, typeof(T));
}
Debido a que su clase contenedora no es estática, el método de Extensión debe estar dentro de una clase estática. Esa clase no debería estar anidada también. Métodos de extensión (Guía de programación C #)
La clase que contiene la extensión debe ser estática. Los tuyos están en
public partial class Form2 : Form
que no es una clase estática
Necesitas crear una clase así:
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.
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 desapareció.
Si eliminas "esto" de tus parámetros debería funcionar.
public static IChromosome To<T>(this string text)
debiera ser:
public static IChromosome To<T>(string text)