Posts
17
Comments
28
Trackbacks
0
Friday, May 07, 2010
Useful Extension Method for ICloneable

 

In the past, I’ve had to put a type specific clone in each cloneable class, but with extension methods you can write a generic T specific clone

class Program
    {
        static void Main(string[] args)
        {
            var b = new Blah() {X = 1, Y = 2};
            var bb = b.Clone();
            Console.WriteLine(string.Format("{0} {1}", bb.X, bb.Y));
        }
    }
    
    public class Blah : ICloneable
    {
        public int X;
        public int Y;
        object ICloneable.Clone()
        {
            return MemberwiseClone();
        }
    }
    public static class CloneExtension
    {
        public static T Clone<T>(this T o) where T : ICloneable 
        {
            return (T)o.Clone();
        }
    }
Posted On Friday, May 07, 2010 3:02 PM | Feedback (2)