Как создать метод расширения для универсальной коллекции - PullRequest
30 голосов
/ 21 февраля 2012

У меня есть список, содержащий FrameworkElements, и я хочу создать метод расширения с именем MoveToTop.Все, что нужно сделать, это принять элемент, который является частью этого списка, и переместить его в начало списка.Я знаю, что это может быть достигнуто без использования метода расширения, но я бы хотел, чтобы он был реализован как метод расширения.

У меня возникли проблемы при попытке выяснить синтаксис для создания метода расширения, который принимаетуниверсальный параметр.Я знаю, что это не правильно, но если бы кто-то мог дать мне представление о том, как этого добиться, я был бы признателен.

public static class Extensions
{
    public static void MoveToTop(this ICollection<T> sequence)
    {
        //logic for moving the item goes here.
    }
}

1 Ответ

56 голосов
/ 21 февраля 2012

Вы были близки, просто нужно <T> после имени метода перед круглыми скобками. Вот где размещен список параметров универсального типа для универсальных методов. Он объявляет параметры универсального типа, которые будет принимать метод, и затем делает их доступными для использования в аргументах, возвращаемых значениях и теле метода.

public static class Extensions
{
    public static void MoveToTop<T>(this ICollection<T> sequence)
    {
        //logic for moving the item goes here.
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...