How to Implement Clone and Copy method inside a Class?
c#, casting, clone, copy
Solution
You need to implement IClonable interface and provide implementation for the clone method. Don't implement this if you want to avoid casting.
A simple deep cloning method could be to serialize the object to memory and then deserialize it. All the custom data types used in your class need to be serializable using the [Serializable] attribute. For clone you can use something like
public MyClass Clone()
{
MemoryStream ms = new MemoryStream();
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(ms, this);
ms.Position = 0;
object obj = bf.Deserialize(ms);
ms.Close();
return obj as MyClass;
}
If your class only has value types, then you can use a copy constructor or just assign the values to a new object in the Clone method.
Problem
I have class called `Employee` with 3 property called `ID`,`Name`,`Dept`. I need to implement the `Copy` and `Clone` method? When I am using `Copy` or `Clone` method I need to avoid Casting? how will I do that?. example: same as `DataTable` which is having `DataTable.Copy()` and `DataTable.Clone()`.