Едва ли это элегантное решение.Поскольку вы сказали, что все методы будут иметь разную сигнатуру, нет способа сохранить их в одном массиве в качестве делегатов .После этого вы можете попробовать использовать отражение, сохраняя каждое значение параметра в object [], сохраняя метод как MethodInfo, а затем вызывая его.
Редактировать: это то, что я мог бы придуматьс помощью:
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[] { });
}
Затем просто вызовите с помощью method.Invoke(method.ReflectedType, args)