Подтвердить что ты не робот

Метод расширения должен быть определен в неэквивалентном статическом классе

Ошибка при:

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));
}
4b9b3361

Ответ 1

Если вы удалите "this" из своих параметров, он должен работать.

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

должен быть:

public static IChromosome To<T>(string text)

Ответ 2

Класс, содержащий расширение, должен быть статическим. У вас есть:

public partial class Form2 : Form

который не является статическим классом.

Вам нужно создать такой класс:

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

Чтобы содержать методы расширения.

Ответ 4

Моя проблема была вызвана тем, что я создал статический метод внутри частичного класса:

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

Когда я удалил метод, ошибка исчезла.