Useful Extension Method for ICloneable

Posted by DesigningCode on Geeks with Blogs See other posts from Geeks with Blogs or by DesigningCode
Published on Fri, 07 May 2010 02:02:13 GMT Indexed on 2010/05/11 2:55 UTC
Read the original article Hit count: 316

Filed under:

 

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();
        }
    }

© Geeks with Blogs or respective owner