using System.Collections.Generic;
public delegate void MyAction(params object[] objArgs);
public delegate T RetAction<T>(params object[] objArgs);
static readonly Dictionary<string, MyAction> methodCache;
public static T RunReturnActions<T>(params RetAction<T>[] actnArgs)
Console.WriteLine("\nWrapperBefore Ret Action: Begin transaction code\n");
var itm = actnArgs.FirstOrDefault();
Console.WriteLine((T)(object)ret);
Console.WriteLine("\nWrapperAfter: Commit transaction code");
public static void RunActions(params MyAction[] actnArgs)
Console.WriteLine("\nWrapperBefore: Begin transaction code\n");
var itm = actnArgs.FirstOrDefault();
Console.WriteLine("\nWrapperAfter: Commit transaction code");
public static void Hash (string s, int i, int j) => Console.WriteLine(" Hash-method call: " + s + "###" + i.ToString() + j.ToString());
public static string Slash (int i, string s) {
string ret = " Slash-method call: " + i.ToString()+ @"////" + s;
public static int Count () { return 20 ;}
RunActions( objArgs => Hash("One", 2, 1) );
var retValue= RunReturnActions<string>( objArgs => Slash(3, "four"));
var retValue1= RunReturnActions<int>( objArgs => Count());