using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DynamicType
{
    class Examples1_3
    {
        // Kod umieszczony w komentarzu gdyż przedstawia coś, czego nie można skompilować.
        //// Listing 14-1
        //public static object UseObjects(object a, object b)
        //{
        //    a.Frobnicate();  // Tego nie uda się skompilować!
        //    return a + b;    // Podobnie jak i tego
        //}

        // Listing 14-2
        public static dynamic UseObjects(dynamic a, dynamic b)
        {
            a.Frobnicate();
            return a + b;
        }

    }

    // Listing 14-3
    public class Frobnicatable
    {
        public void Frobnicate()
        {
        }

        public static Frobnicatable operator +(Frobnicatable left, Frobnicatable right)
        {
            return new Frobnicatable();
        }
    }

}
