Я пытаюсь создать глубокий клон объекта, используя следующий метод.
public static T DeepClone<T>(this T target)
{
using (MemoryStream stream = new MemoryStream())
{
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(stream, target);
stream.Position = 0;
return (T)formatter.Deserialize(stream);
}
}
Этот метод требует объекта, который является Сериализованным, то есть объектом класса, который имеет на нем атрибут "Serializable" . У меня есть класс, который имеет атрибут "DataContract" , но метод не работает с этим атрибутом. Я думаю, что "DataContract" также является сериализатором, но, возможно, отличается от типа "Serializable" .
Может ли кто-нибудь объяснить мне разницу между ними? Также, пожалуйста, дайте мне знать, возможно ли создать глубокий клик объекта с одним атрибутом, который выполняет работу как с атрибутом "DataContract" , так и с "Serializable" или может быть другим способом создания глубокого изображения?
Пожалуйста, помогите!