Добавление общих методов расширения к таким интерфейсам, как IEnumerable

Я пытался заставить мои общие методы расширения работать, но они просто отказываются, и я не могу понять , почему . Эта цепочка мне не помогла, хотя должна.

Конечно, я искал, как это сделать, везде, где я вижу, говорят, что это просто, и это должно быть в таком синтаксисе:
(В некоторых местах я читал, что мне нужно добавить «where T: [type]» после удаления параметра, но мой VS2010 просто говорит, что это синтаксическая ошибка.)

using System.Collections.Generic;
using System.ComponentModel;

public static class TExtensions
{
    public static List ToList(this IEnumerable collection)
    {
        return new List(collection);
    }

    public static BindingList ToBindingList(this IEnumerable collection)
    {
        return new BindingList(collection.ToList());
    }
}

Но это просто не работает, я получить эту ошибку:

Тип или имя пространства имен 'T' могло не найдены (вам не хватает использования директива или ссылка на сборку?)

Если я затем заменю

public static class TExtensions

на

public static class TExtensions

, это даст следующую ошибку:

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

Мы будем благодарны за любую помощь, я действительно застрял здесь.

6
задан Community 23 May 2017 в 12:04
поделиться