No hay una solución elegante para esto. Como dijo que todos los métodos tendrían una firma diferente, no hay forma de almacenarlos en una única matriz como delegados. Con eso fuera del camino, lo próximo que puede intentar es usar la reflexión, almacenar cada valor del parámetro en el objeto [], almacenar el método como MethodInfo y luego invocarlo.
Editar: Esto es lo que podría llegar a:
private Dictionary<MethodBase, object[]> methodCollection = new Dictionary<MethodBase, object[]>();
public void AddMethod(MethodBase method, params object[] arguments)
{
methodCollection.Add(method, arguments);
}
private void MyMethod(int p1, string p2, bool p3)
{
AddMethod(System.Reflection.MethodInfo.GetCurrentMethod(), new object[] { p1, p2, p3 });
}
private void MyOtherMethod()
{
AddMethod(System.Reflection.MethodInfo.GetCurrentMethod(), new object[] { });
}
A continuación, sólo invocar con method.Invoke(method.ReflectedType, args)
¿Todas estas funciones tendrán las mismas firmas o serán diferentes? ¿Recordará estas funciones con los mismos argumentos o cambiarán? –
@JeffMercado Serán diferentes con una cantidad variable de parámetros y tipos de devolución. –
Tal vez eche un vistazo a esta pregunta. http://stackoverflow.com/questions/377217/c-sharp-delegate-for-two-methods-with-different-parameters Puede que no sea exactamente lo mismo que intenta hacer, pero se trata de ejecutar delegados con diferentes parámetros –