he escrito este método de extensión (que compila):Aplanar IEnumerable <IEnumerable <>>; la comprensión de los genéricos
public static IEnumerable<J> Flatten<T, J>(this IEnumerable<T> @this)
where T : IEnumerable<J>
{
foreach (T t in @this)
foreach (J j in t)
yield return j;
}
El código siguiente provoca un error de tiempo de compilación (sin método adecuado encontró), por qué?:
IEnumerable<IEnumerable<int>> foo = new int[2][];
var bar = foo.Flatten();
Si implemento la extensión como la de abajo, me sale error de compilación tiempo:
(2)public static IEnumerable<J> Flatten<J>(this IEnumerable<IEnumerable<J>> @this)
{
foreach (IEnumerable<J> js in @this)
foreach (J j in js)
yield return j;
}
Editar: Esta pregunta considero respondió, pero se planteó otra pregunta respecto resolución de sobrecarga y restricciones de tipo. Esta pregunta puse aquí: Why aren't type constraints part of the method signature?
Tu edición no funciona porque tiene demasiados rodea enumerable. 'foo.Flatten, int>();' debería funcionar. –
dlev