C# 如何编写一个通用的扩展方法,将对象包装在可枚举文件中?

C# 如何编写一个通用的扩展方法,将对象包装在可枚举文件中?,c#,generics,extension-methods,C#,Generics,Extension Methods,我正在尝试编写一个扩展方法,它接受类型为T的对象并返回IEnumerable 这是我的第一次尝试: internal static class ObjectExtensions<T> { public static IEnumerable<T> Yield(this T item) { yield return item; } } 内部静态类ObjectExtensions { 公共静态IEnumerable收益率(此T项) {

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

这是我的第一次尝试:

internal static class ObjectExtensions<T>
{
    public static IEnumerable<T> Yield(this T item)
    {
        yield return item;
    }
}
内部静态类ObjectExtensions
{
公共静态IEnumerable收益率(此T项)
{
收益回报项目;
}
}
这个函数可以工作,但只有当我编写
ObjectExtensions.Yield(foo)
foo.Yield()
无法解析

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


(后来我发现
可枚举。Repeat
符合我最初的要求,所以这个问题更令人好奇。)

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

internal static class ObjectExtensions
{
   public static IEnumerable<T> Yield<T>(this T item)
   {
        yield return item;
   }
}
内部静态类ObjectExtensions
{
公共静态IEnumerable收益率(此T项)
{
收益回报项目;
}
}

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

internal static class ObjectExtensions
{
   public static IEnumerable<T> Yield<T>(this T item)
   {
        yield return item;
   }
}
内部静态类ObjectExtensions
{
公共静态IEnumerable收益率(此T项)
{
收益回报项目;
}
}

将泛型从类中移除。只有你的方法需要是泛型的,你的代码不应该编译。扩展方法不能在泛型类中,编译器应该出错并显示这样的消息。请从类中删除泛型。只有你的方法需要是泛型的,你的代码不应该编译。扩展方法不能在泛型类中,编译器应该会出错并显示这样的消息。不知道为什么我忘了尝试。谢谢不知道为什么我忘了试一下。谢谢