Cloning an object using serialization

Here’s an easy way of cloning an object (deep copy):

public T CloneObject<T>(T obj) where T:class
    if (obj== null)
        return null;

    MemoryStream memstream = new MemoryStream();
    IFormatter formatter = new BinaryFormatter();
    formatter.Serialize(memstream, obj);
    memstream.Seek(0, SeekOrigin.Begin);
    T clone = (T)formatter.Deserialize(memstream);
    return clone;

The requirement is of course that the object is serializable and marked with the [Serializable] attribute.