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项)
{
收益回报项目;
}
}
将泛型从类中移除。只有你的方法需要是泛型的,你的代码不应该编译。扩展方法不能在泛型类中,编译器应该出错并显示这样的消息。请从类中删除泛型。只有你的方法需要是泛型的,你的代码不应该编译。扩展方法不能在泛型类中,编译器应该会出错并显示这样的消息。不知道为什么我忘了尝试。谢谢不知道为什么我忘了试一下。谢谢