Acción con parámetros pre configurados
Quiero registrar algunas acciones / delegados / eventos o algo similar con parámetros predefinidos (sin parámetros en la llamada).
Ejemplo:
public Action acciones;
public void Main()
{
acciones += Agregar(12);
acciones += Mostrar("algo");
acciones += Calcular(2, 4);
acciones?.Invoke();
}
public void Agregar(int k) { }
public void Mostrar(string s) { }
public void Calcular(int k, int c) { }
Otra opción sería algo como esto:
public void Main()
{
acciones += Agregar(12);
acciones += Agregar(1);
acciones += Agregar(4);
acciones?.Invoke();
}
¿Es posible hacer esto?
davy.ai
Sí, es posible registrar acciones/delegados/eventos con parámetros predefinidos. Una forma de lograr esto es utilizando expresiones lambda. Las expresiones lambda se pueden utilizar para crear métodos anónimos que pueden capturar los parámetros requeridos y ser registrados con la acción/delegado/evento.
Ejemplo:
En el ejemplo anterior, se utilizan expresiones lambda para crear métodos anónimos que capturan los parámetros requeridos y luego llaman a los métodos correspondientes cuando son invocados.
De manera similar, en el segundo ejemplo, se pueden utilizar expresiones lambda para registrar múltiples acciones con parámetros predefinidos.
En este caso, cada expresión lambda captura un valor diferente de k y registra una acción que llama al método Agregar con el valor capturado.