Soy nuevo en los métodos de extensión y explorar lo que pueden hacer.C# Métodos de extensión - devolver llamada objeto
¿Es posible que al objeto que llama se le asigne la salida sin una asignación específica?
Aquí es un ejemplo sencillo de explicar:
public static string ExtensionTest(this string input)
{
return input + " Extended!";
}
En los siguientes ejemplos ...
var foo = "Hello World!";
var foo2 = foo.ExtensionTest(); // foo2 = "Hello World! Extended!"
foo.ExtensionTest(); // foo = "Hello World!"
foo = foo.ExtensionTest(); // foo = "Hello World! Extended!"
... ¿hay alguna manera de conseguir foo.ExtensionTest()
a resultar en "Hello World! Extended!"
sin asignar específicamente foo = foo.ExtensionTest()
Parece que estás en busca de un 'este modificador ref' en un método estático, donde la llamada in situ se ve como 'foo.Extension();'. Desafortunadamente, el idioma no tiene esta característica en este momento. Tal vez algo para recomendar a los diseñadores de idiomas? :) Personalmente, no lo quisiera. – Ani
@Ani: ¡Jaja, no! Oh hombre, ¿puedes imaginar el * abuso * que seguiría? 'string bar = foo; foo.DoSomething(); Console.WriteLine (ReferenceEquals (bar, foo)); '... (salida:' False', desarrollador: * WHAAAT?!? *) –
@Dan Tao: Exactamente. Todos sus refs pertenecen a métodos estáticos. – Ani