using System;
public class Program
{
public enum Someenum { A, B, C }
public static void Foo( dynamic obj ){ Console.WriteLine("1");}
public static void Foo( Someenum e ){ Console.WriteLine("2");}
public static void Foo<T>( T obj ){ Console.WriteLine("3");}
public static void Main()
Foo(Someenum.A);
Foo((object)Someenum.A);
Foo((int)Someenum.A);
}