using System.Linq.Expressions;
public static void Main()
(new {}).RunExpressions<object>();
(new {}).RunExpressions<object>(a => a);
(new {}).RunExpressions<object>(a => a, b => b);
Extensions.RunExpressions<object>(new {}, a => a);
Extensions.SayHello("Marta");
public static class Extensions
public static void RunExpressions<T>(this object o, Expression<Func<T, object>> expression)
Console.WriteLine("Implementation 1");
public static void RunExpressions<T>(this object o, params Expression<Func<T, object>>[] expressions)
Console.WriteLine("Implementation 2");
public static void SayHello(string s)
Console.WriteLine("Hello1 " + s);
public static void SayHello(params string[] s)
Console.WriteLine("Hello2 " + s[0]);