Để tuần tự hóa một lớp với protobuf-net, bạn cần cung cấp thuộc tính lớp và thuộc tính [ProtoContract] và [ProtoMember (n)] - trong đó n là 1,2,3, .., vnTrong Protobuf-net, có thể tuần tự hóa các lớp không được trang trí không?
Appart từ nhân bản đến một hình ảnh phản chiếu của một lớp, có thể tuần tự hóa/deserialize một lớp chúng ta không có quyền kiểm soát?
Ví dụ:
sử dụng ProtoBuf;
- Serializer.Serialize < Ngoại lệ > (OutputStream, ngoại lệ);
hoặc
- Serializer.Serialize < tuple < dữ liệu, ngoại lệ > > (OutputStream, dataWithPossibleException);
NB. Dữ liệu có [ProtoContract]/[ProtoMember] và các dữ liệu khác thì không.
cách tiếp cận có thể:
- Nó sẽ được tốt đẹp nếu chúng ta có "thuộc tính mở rộng" mà làm việc như phương pháp khuyến nông. [không thể]
- sao chép lớp cục bộ và sau đó sao chép sang/từ đối tượng trước khi tuần tự hóa/deserializing [điều đó sẽ hoạt động, nhưng năng suất giảm xuống]
- tạo tệp/định nghĩa proto bên ngoài cho lớp và lưu trữ tài nguyên? [Ai biết làm thế nào để đi về điều này?]
Cảm ơn bạn đã dự đoán nhu cầu này! Tôi đã lựa chọn thay thế cho bây giờ, trong đó tôi decompiled các lớp khung nhỏ và đặt chúng trong hội đồng của tôi. Chủ yếu là tôi cố gắng tuân thủ POCO, vì vậy một lần như thế này không phải là một vấn đề lớn. Tôi sẽ kiểm tra các tùy chọn phiên bản 2 mới. – sgtz
@sgtz phương pháp SetSurrogate nên làm cho trực tiếp và thuận tiện hơn –
btw: Tôi đã có phiên bản cũ hơn một chút của v2. Vì vậy, tôi nhấn cập nhật trên svn, và bây giờ tôi có thể Serialize/Deserialize>. Ngoài ra, tôi đã phải loại bỏ + readd các protobuf-net nhị phân. Không chắc nó là gì, nhưng bây giờ nó hoạt động tốt.Cảm ơn bạn đã thực hiện dự án này công khai ... và cũng nhờ có Google. Tôi nên đề cập rằng tại thời điểm này, tôi vẫn * sử dụng bản sao của Tuple của tôi, không phải là bản sao trong không gian tên System. –
sgtz