using System.Threading.Tasks;
static async Task Main(string[] args)
FuntionDecorator(() => true);
FuntionDecorator(() => false);
FuntionDecorator(() => throw new Exception());
public static void FuntionDecorator(Func<bool> Func, string successText = "success", string failText = "fail", string errorText = "error") => Decorator(Func, Func.Method.Name, successText, failText, errorText);
public static void FuntionDecorator<T>(Func<T, bool> Func, T type, string successText = "success", string failText = "fail", string errorText = "error")
Decorator(Func, Func.Method.Name, successText, failText, errorText);
public static void FuntionDecorator<T1, T2>(Func<T1, T2, bool> Func, T1 type1, T2 type2, string successText = "success", string failText = "fail", string errorText = "error")
Decorator(Func, Func.Method.Name, successText, failText, errorText);
public static void Decorator(dynamic f, string funcName, string successText = "success", string failText = "fail", string errorText = "error")
Console.WriteLine("When Func is true");
Console.WriteLine("When Func is false");
Console.WriteLine("When Func excpetion, errorText: {0}, funcName: {1}, ex: {2}", errorText, funcName, e.ToString());