如何编写将对象包装在可枚举中的通用扩展方法?

How to write a generic extension method which wraps object in an enumerable?

我正在尝试编写一个扩展方法,它接受 T 和 returns IEnumerable<T>.

类型的对象

这是我的第一次尝试:

internal static class ObjectExtensions<T>
{
    public static IEnumerable<T> Yield(this T item)
    {
        yield return item;
    }
}

这个函数有效,但只有当我写 ObjectExtensions<Foo>.Yield(foo): foo.Yield() 不解决。

有没有一种方法可以根据输入的类型声明 returns 泛型的扩展方法?

(后来发现Enumerable.Repeat符合我原来的要求,所以这个问题比较好奇。)

您不需要将 class 指定为泛型,只需指定扩展方法。

internal static class ObjectExtensions
{
   public static IEnumerable<T> Yield<T>(this T item)
   {
        yield return item;
   }
}