Tôi đã tìm thấy nhiều giải pháp ở đây tại SO và khác là thỏa thuận với bản sao sâu của đối tượng thông qua serialization/deserialization (vào bộ nhớ và trở lại).Nhân bản đối tượng mà không cần serialization
Yêu cầu các lớp được sao chép phải được đánh dấu bằng [Serializable]
. Tôi xảy ra để có các lớp học của tôi (cũng hầu hết trong số họ) được đánh dấu bằng [DataContract]
vì tôi sử dụng DataContractSerializer
để tuần tự hóa thành XML.
Tôi chỉ giới thiệu thuộc tính [Serializable]
vì sự cần thiết phải sao chép sâu của một số trường hợp lớp này. Tuy nhiên, bây giờ một cái gì đó đã xảy ra để serialization/deserialization thông qua DCS bởi vì nó không hoạt động nữa - lỗi về mong đợi một phần tử XML khác nhau trên deserialization. Nếu tôi xóa [Serializable]
, các lỗi sẽ biến mất.
Tùy chọn của tôi là gì? Tôi chỉ muốn sao chép các vật thể của mình càng đơn giản càng tốt.
Bạn có thể sử dụng sự phản chiếu, nhưng điều đó cũng có thể phải chịu một chi phí hiệu suất nhỏ. – IDWMaster
Tại sao bạn cần [Serializable] ở đây? Bạn có thể sử dụng DCS cho bản sao sâu ...? Chỉ cần serialize nó vào một MemoryStream thông qua DCS ...? –
vâng tôi vừa nghĩ ra một thứ gì đó, tôi sẽ đăng nó – mare