If you need to be totally free-form in your functions, you'll want to use reflection to call the functions. Type.InvokeMember will probably do what you want, but be warned that it's fairly slow, as it has to do a lot of work to figure out what function you want to call. If your problem has enough regularity in the number and types of parameters, you could write a delegate for each function type, store those in a hashtable, and then look them up based on the function name. This would be a lot faster than using reflection, but more work.