Quiero ser capaz de escribir métodos de extensión por lo que puedo decir:¿Cómo puedo obtener un método de extensión para cambiar el objeto original?
lines.ForceSpaceGroupsToBeTabs();
en lugar de:
lines = lines.ForceSpaceGroupsToBeTabs();
Sin embargo, el siguiente código actualmente da salida:
....one
........two
en lugar de:
Tone
TTtwo
¿Qué tengo que cambiar en el siguiente código para que produzca:
Tone
TTtwo
(tenga en cuenta que para la visibilidad, . = space, T = \t
):
using System;
using System.Collections.Generic;
namespace TestExtended82343
{
class Program
{
static void Main(string[] args)
{
List<string> lines = new List<string>();
lines.Add("....one");
lines.Add("........two");
lines.ForceSpaceGroupsToBeTabs();
lines.ForEach(l => Console.WriteLine(l));
Console.ReadLine();
}
}
public static class Helpers
{
public static void ForceSpaceGroupsToBeTabs(this List<string> originalLines)
{
string spaceGroup = new String('.', 4);
List<string> lines = new List<string>();
foreach (var originalLine in originalLines)
{
lines.Add(originalLine.Replace(spaceGroup, "T"));
}
originalLines = lines;
}
}
}
De hecho. No puede cambiar el objeto referenciado "extendido", pero puede cambiar los contenidos –