static void Main()
        {
            ExtentionMethods Ex = new ExtentionMethods();

            Ex.Test1();
            Ex.Test2();
            Ex.Test3();
            Ex.Test4("Name");
            Console.ReadKey();
        }
        static void Main()
        {
            ExtentionMethods Ex = new ExtentionMethods();

            Ex.Test1();
            Ex.Test2();
            Ex.Test3();
            Ex.Test4("Navjyot");

            /*as int is struct can check with f12*/
            int i = 5;
            //i.factorial() //as no factorial Methos we can add
            long result = i.Factorial(); // Now we have extention method for stuct int32

            /*string is sealed class*/
            string str = "oLd StRinG iS DirTy";

            Console.WriteLine(str.ToProperCase());

            Console.WriteLine(i + "!=" + result);
            Console.ReadKey();
        }
 //How to add parametered method
 public static void Test4(this ExtentionMethods Ex, string Name)
 {
     Console.WriteLine("Hello " + Name);
 }
 //If Extention Methods is defined with same name and signature of an existing method in the class then extention method is not called and 1st preference to original Method
 public static void Test2(this ExtentionMethods Ex)
 {
     Console.WriteLine("Extension Method-2");
 }