如何编写一个包含可枚举对象的通用扩展方法?

ehd*_*hdv 0 c# generics extension-methods

我正在尝试编写一个接受类型对象T并返回的扩展方法IEnumerable<T>.

这是我的第一次尝试:

internal static class ObjectExtensions<T>
{
    public static IEnumerable<T> Yield(this T item)
    {
        yield return item;
    }
}
Run Code Online (Sandbox Code Playgroud)

这个功能有效,但只有我写ObjectExtensions<Foo>.Yield(foo):foo.Yield()不解决.

有没有办法声明一个扩展方法,它根据输入的类型返回一个泛型?

(我发现我已经发现Enumerable.Repeat符合我原来的要求,所以这个问题更好奇.)

Ale*_*son 6

您不需要将类指定为泛型,仅指定扩展方法.

internal static class ObjectExtensions
{
   public static IEnumerable<T> Yield<T>(this T item)
   {
        yield return item;
   }
}
Run Code Online (Sandbox Code Playgroud)