Có cách nào để tuần tự hóa (sử dụng BinaryFormatter
) IEnumerator<T>
được tạo khi tôi sử dụng yield return
s? Lớp được tạo tự động không được đánh dấu là Serializable
.Serializing IEnumerator <T> được tạo bằng cách sử dụng return yield
Trả lời
Trình biên dịch được tạo ra đếm được không có thuộc tính [Serializable] được áp dụng cho nó, vì vậy, không, trong hộp bạn không thể làm điều này.
Bạn nên tự hỏi mình, "Tại sao tôi sử dụng lợi nhuận ở đây và điều đó có nghĩa là gì khi đối tượng này được deserialized?"
Nếu thuận tiện, bạn có thể sử dụng nó để điền vào một loại có thể được đăng. Nếu bạn sử dụng nó để thực hiện một số nâng nặng trong một cách lười biếng, bạn có thể muốn xem xét việc thay đổi thiết kế của bạn để serialize/deserialize các thông tin bạn cần để thực hiện việc nâng nặng.
Chỉ cần lặp lại điều tra và tuần tự hóa từng trường hợp được trả về.
Bạn đang sử dụng lớp học nào để triển khai IEnumerable<T>
? List<T>
nên tuần tự hóa OK.
Hãy thử gọi ToList()
trên bộ sưu tập của bạn trước khi sắp xếp.
+1 cho giải pháp đơn giản. – Tyrsius
- 1. Strongly-typed giao diện phương pháp sử dụng yield return
- 2. Những loại lớp nào yield return trở
- 3. Điều hướng bằng thuật sĩ với thu nhập/số lợi nhuận của IEnumerable/yield return
- 4. Làm thế nào để sử dụng trình biên dịch 'yield return' để xây dựng một lớp
- 5. DataContractSerializer serializing Danh sách <T> nhận được lỗi
- 6. C#: IEnumerator <T> trong một sử dụng tuyên bố
- 7. Cách triển khai IEnumerable <T> bằng GetEnumerator()?
- 8. Bạn có muốn trả lại IEnumerator <T> .GetEnumerator() trong IEnumerator.GetEnumerator()?
- 9. Lợi nhuận là == IEnumerable & IEnumerator?
- 10. Serializing một đối tượng yêu cầu bằng cách sử dụng JSON
- 11. Vấn đề với serializing Hibernate đối tượng bằng cách sử dụng XStream
- 12. serializing dữ liệu sử dụng giới hạn kích thước json.net?
- 13. serializing một datatable để tái sử dụng sau này
- 14. Serializing Exception có thể được ném
- 15. Cách tốt nhất để chuyển đổi một IEnumerator thành một IEnumerator chung là gì?
- 16. Thuật toán để thực hiện câu lệnh C# yield
- 17. Xóa <script> thẻ bằng cách sử dụng jQuery
- 18. Câu hỏi liên quan đến IEnumerable và IEnumerator
- 19. tạo api bằng cách sử dụng php
- 20. Tạo IFRAME bằng cách sử dụng JavaScript
- 21. Tạo SVG bằng cách sử dụng Python
- 22. Sử dụng DLR để chạy mã được tạo bằng CompileAssemblyFromSource?
- 23. Vấn đề với debug đồng hồ trong Visual Studio với các phương pháp điều tra viên yield return
- 24. Thay đổi Return-path sử dụng PHPMailer
- 25. Tạo một thể hiện của Hành động <'T> bằng cách sử dụng phản chiếu
- 26. in "<html>" bằng cách sử dụng html
- 27. Cách tạo gói không phải TH từ mã được tạo bằng cách sử dụng Mẫu Haskell?
- 28. Return FileName khi sử dụng OpenFileDialog
- 29. Tạo mã bằng cách sử dụng .net
- 30. Tạo bảng bằng cách sử dụng Javascript
điều này thực sự không hoàn toàn đúng. Tôi đã từng nghĩ rằng bạn không thể, nhưng bạn thực sự có thể sử dụng thay thế cho serialization cho hiệu ứng thú vị trong khi vẫn giữ lại mã khá chung chung. Kiểm tra mã ví dụ tại: http://dotnet.agilekiwi.com/blog/2007/05/implementing-workflow-with-persistent.html –