static void Main(string[] args)
    {
        ConcretePrototype1 inst1 = new ConcretePrototype1()
        {
            Id   = 1,
            Name = "Jon Skeet"
        };
        ConcretePrototype2 inst2 = new ConcretePrototype2()
        {
            Id   = 2,
            Name = "Frodo Torbins"
        };
        ConcretePrototype1 copy1 = inst1.Clone();
        ConcretePrototype2 copy2 = inst2.Clone();

        Console.WriteLine(copy1.Name + "  " + copy1.GetType().Name);
        Console.WriteLine(copy2.Name + "  " + copy2.GetType().Name);
    }