2012-10-05 33 views
9

Tôi đang sử dụng bản xem trước Azure Cache và cần phải thực hiện một số lớp có thể Serializable.Bất lợi khi tạo lớp cho Serializable

Có bất kỳ bất lợi nào khi tạo lớp học có thể được nối tiếp - chẳng hạn như vấn đề hiệu suất không?

[Serializable] 
public class MyClass {} 

Tôi tìm thấy một vài câu hỏi liên quan, nhưng chúng không phải về nhược điểm.

  1. Are all .NET exceptions serializable?

  2. Drawbacks of marking a class as Serializable

Thank trước

+1

Chỉ có bất lợi mà tôi gặp phải là nó có thể ngăn chặn một số obfuscators từ obfuscating mã của bạn. Nếu lớp được đánh dấu là Serializable, tên sẽ được giữ nguyên. – Rob

Trả lời

8

Không, không có chi phí thực chất chỉ đơn giản là trong được đánh dấu là [Serializable]. Vấn đề duy nhất tôi muốn có là BinaryFormatterNetDataContractSerializer là các trình tuần tự tệ hại và hầu hết các công cụ sắp xếp khác không quan tâm đến cờ này (ok, tôi có thể bị thiên vị)

5

Giả sử bạn đang nói về chi phí sử dụng Serializable thuộc tính thay vì quá trình tuần tự hóa thực tế, một hạn chế sẽ là một bên thứ ba thường cho rằng lớp được thiết kế để có thể tuần tự hóa được. Trong trường hợp này, nếu bạn chỉ đánh dấu nó có thể tuần tự hóa được (vì nếu có cơ hội mà một bên thứ ba có thể tương tác với nó), thì có thể bạn muốn dành thời gian để đảm bảo rằng lớp đó phù hợp được sắp xếp theo cách hiệu quả. Vì vậy, đó là nhiều hơn một sự cân bằng tài nguyên hơn là một kỹ thuật, từ quan điểm đó.

Từ quan điểm kỹ thuật, như Marc Gravell đã nói, chỉ cần sử dụng thuộc tính sẽ không thực sự có bất kỳ chi phí nào.

Các vấn đề liên quan