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

时间:2015-02-18 16:25:26

标签: c# generics extension-methods

我尝试编写一个扩展方法,该方法接受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符合我原来的要求,所以这个问题更有好奇心。)

1 个答案:

答案 0 :(得分:6)

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

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