¿Cómo puedo almacenar delegados (named, anonymous, lambda) en una lista genérica? Básicamente, estoy tratando de construir un diccionario de delegados desde donde pueda acceder a un delegado almacenado utilizando una clave, ejecutarlo y devolver el valor a pedido. ¿Es posible hacerlo en C# 4? Alguna idea para lograrlo? Nota: La lista heterogénea es preferible donde puedo almacenar cualquier tipo de delegados.Cómo almacenar delegados en una lista
Respuesta
¿No es suficiente System.Collections.Generic.Dictionary<string, System.Delegate>
?
de esa manera no puedo almacenar delegados anónimos o lambdas. –
@Anindya Chatterjee: Sí, puedes: 'dic.Add (" acción ", nueva Acción (() => Console.WriteLine (" acción llamada! ")));' – Timwi
Ya, gracias por recordarme, estoy totalmente se olvidó de --new Action (() => Console.WriteLine ("acción llamada!")) - –
Dictionary<string, Func<int, int>> fnDict = new Dictionary<string, Func<int, int>>();
Func<int, int> fn = (a) => a + 1;
fnDict.Add("1", fn);
var re = fnDict["1"](5);
Estoy buscando una solución más genérica donde no haya restricciones para los delegados. –
Bueno, aquí hay un ejemplo sencillo:
class Program
{
public delegate double MethodDelegate(double a);
static void Main()
{
var delList = new List<MethodDelegate> {Foo, FooBar};
Console.WriteLine(delList[0](12.34));
Console.WriteLine(delList[1](16.34));
Console.ReadLine();
}
private static double Foo(double a)
{
return Math.Round(a);
}
private static double FooBar(double a)
{
return Math.Round(a);
}
}
No estoy buscando este tipo de solución. La solución solo requiere un tipo especial de delegado designado, no otros. –
public delegate void DoSomething();
static void Main(string[] args)
{
List<DoSomething> lstOfDelegate = new List<DoSomething>();
int iCnt = 0;
while (iCnt < 10)
{
lstOfDelegate.Add(delegate { Console.WriteLine(iCnt); });
iCnt++;
}
foreach (var item in lstOfDelegate)
{
item.Invoke();
}
Console.ReadLine();
}
- 1. Almacenar una lista de métodos en C#
- 2. Lista de delegados e invocando
- 3. Almacenar objetos de trazado en una lista
- 4. Java: ¿cómo almacenar datos triples en una lista?
- 5. ¿Cómo almacenar diferentes tipos de datos en una lista? (C++)
- 6. ¿Cómo puedo almacenar una lista de arrays de objetos personalizados?
- 7. Cómo manejar múltiples delegados
- 8. Almacenar una lista de objetos arbitrarios en C++
- 9. Delegados en C#
- 10. ¿Cómo almacenar una matriz en una cookie?
- 11. Múltiples delegados en iOS
- 12. ¿Cómo agregar un delegado de manzana a una lista de delegados de fruta?
- 13. ¿Cómo puedo obtener una lista de los delegados subyacentes de un evento utilizando la reflexión?
- 14. Java: ¿Cómo almacenar la lista <Object> en OrientDB?
- 15. delegados opcionales en C#
- 16. delegados anónimos en C#
- 17. Cómo extender protocolos/delegados en Objective-C
- 18. Proxies/delegados en Scala
- 19. UIAlertView Delegados
- 20. ¿Alguien sabe de una lista de delegados ya incorporada en el marco?
- 21. delegados estándar en C#
- 22. Delegados en python
- 23. Usando jQuery.data para almacenar una lista de elementos
- 24. ¿Cómo trabajan los delegados (en el fondo)?
- 25. ¿Cómo almacenar un objeto en una cookie?
- 26. cómo almacenar printf en una variable?
- 27. Cómo almacenar printStackTrace en una cadena
- 28. ¿Cómo almacenar una matriz en mysql?
- 29. ¿Cómo almacenar una matriz simétrica?
- 30. Cómo almacenar una lista de objetos en la configuración de la aplicación
Dictionary? –
Nota heterogénea es una mala idea, ¿cómo sabrá qué parámetros debe pasar el delegado –