Я пытаюсь написать метод расширения, который принимает объект типа T
и возвращает IEnumerable<T>
.Как написать общий метод расширения, который обертывает объект в перечислимом?
Вот моя первая попытка:
internal static class ObjectExtensions<T>
{
public static IEnumerable<T> Yield(this T item)
{
yield return item;
}
}
Эта функция работает, но только если я пишу ObjectExtensions<Foo>.Yield(foo)
: foo.Yield()
не решает.
Есть ли способ объявить метод расширения, который возвращает общий тип, основанный на типе ввода?
(я с тех пор обнаружил Enumerable.Repeat
соответствует моим исходным требованиям, так что этот вопрос больше любопытства.)
взять непатентованные образцы класса. Только ваши методы должны быть общими –
Код, который у вас не должен компилироваться. Методы расширения не могут быть в родовых классах, и компилятор должен обходиться ошибкой с сообщением об этом. – Servy