我尝试编写一个扩展方法,该方法接受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
符合我原来的要求,所以这个问题更有好奇心。)
答案 0 :(得分:6)
您不需要将类指定为泛型,只需要指定扩展方法。
internal static class ObjectExtensions
{
public static IEnumerable<T> Yield<T>(this T item)
{
yield return item;
}
}