Calling arbritary functions with arguments in Unity

Okay so we will have events happening. Problem is, these events can occur in arbitrary order and do alter the same items. So we have a scheduler system, which stores the function that executes the event, timing, etc, including arguments. So we need to execute arbitrary functions with arguments. I know its possible to pass functions as objects around in UnityScript and C#. The problem is in applying the arguments. Any way to do this in Unity?

I tried to use the Javascript `apply` function, which didn't work.

To make this clearer,

Script A adds function B to ArrayList C
Script D iterates through C and finds B
D calls B([ArgumentList])

How can I do this?

Look into the 'eval' function, Mono's Evaluator, and this post: http://answers.unity3d.com/questions/21984/eval-or-can-i-call-jscript-from-an-editor-c-script

Actually, the right answer(as I found afterwards) is using C# reflection.

t = typeof(closure_schedule[currState]);//grabs the Type for the class
for(var mi: System.Reflection.MethodInfo in t.GetMethods())
{
    if(mi.Name==function_schedule[currState])
    {
        mi.Invoke(closure_schedule[currState], args_schedule[currState].ToArray());

    }   
}

`args_schedule[currState]` is an ArrayList which I've added the arguments to, and I do the ToArray to get an Object[], which is what Invoke expects. `closure_schedule[currState]` contains the object in which the function/method is being executed in scope of(ie, closures).