Ответ 1
Если вы удалите "this" из своих параметров, он должен работать.
public static IChromosome To<T>(this string text)
должен быть:
public static IChromosome To<T>(string text)
Ошибка при:
public partial class Form2 : Form
Вероятная причина:
public static IChromosome To<T>(this string text)
{
return (IChromosome)Convert.ChangeType(text, typeof(T));
}
Попытка (без статического ключевого слова):
public IChromosome To<T>(this string text)
{
return (IChromosome)Convert.ChangeType(text, typeof(T));
}
Если вы удалите "this" из своих параметров, он должен работать.
public static IChromosome To<T>(this string text)
должен быть:
public static IChromosome To<T>(string text)
Класс, содержащий расширение, должен быть статическим. У вас есть:
public partial class Form2 : Form
который не является статическим классом.
Вам нужно создать такой класс:
static class ExtensionHelpers
{
public static IChromosome To<T>(this string text)
{
return (IChromosome)Convert.ChangeType(text, typeof(T));
}
}
Чтобы содержать методы расширения.
Поскольку ваш содержащий класс не является статическим, метод расширения должен находиться внутри статического класса. Этот класс также должен быть не вложен. Методы расширения (Руководство по программированию на С#)
Моя проблема была вызвана тем, что я создал статический метод внутри частичного класса:
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;
}
}
Когда я удалил метод, ошибка исчезла.