Cómo implementar el método de encadenamiento?
Pregunta
En C # ¿cómo se puede poner en práctica la capacidad de métodos de cadenas en clases personalizadas de uno lo que uno puede escribir algo como esto:
myclass.DoSomething().DosomethingElse(x);
etc ...
Gracias!
Solución
Chaining es una buena solución para producir nueva instancia de instancias existentes:
public class MyInt
{
private readonly int value;
public MyInt(int value) {
this.value = value;
}
public MyInt Add(int x) {
return new MyInt(this.value + x);
}
public MyInt Subtract(int x) {
return new MyInt(this.value - x);
}
}
Uso:
MyInt x = new MyInt(10).Add(5).Subtract(7);
También puede utilizar este modelo para modificar una instancia existente, pero esto generalmente no se recomienda:
public class MyInt
{
private int value;
public MyInt(int value) {
this.value = value;
}
public MyInt Add(int x) {
this.value += x;
return this;
}
public MyInt Subtract(int x) {
this.value -= x;
return this;
}
}
Uso:
MyInt x = new MyInt(10).Add(5).Subtract(7);
Otros consejos
HacerAlgo debe devolver una instancia de la clase con el método DoSomethingElse.
Para una clase mutable, algo así como
class MyClass
{
public MyClass DoSomething()
{
....
return this;
}
}
Sus métodos deben volver this
o una referencia a otro (posiblemente nuevo) objeto dependiendo exactamente lo que quiere acheive
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow