2011-10-13 29 views
5

Làm cách nào để xem nội dung của Luồng trong cửa sổ QuickWatch trong Visual Studio?Xem nội dung của Luồng trong cửa sổ QuickWatch của Visual Studio

Cập nhật

Như mỗi câu trả lời của Daniel tôi đã sử dụng đoạn mã sau -

System.Text.Encoding.UTF8.GetString((byte[])stream.GetType().GetMethod("InternalGetBuffer", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).Invoke(stream, null))

+0

Luồng nào? steram là văn bản/nhị phân/xml? – sll

+0

Đó là một MemoryStream chứa JSON – jameskind

Trả lời

4

Bạn có thể xem nội dung của MemoryStream mà không thay đổi nó khi bạn có thể làm cho một số giả định:

  1. dòng của bạn thực sự là một MemoryStream
  2. dòng của bạn chỉ chứa dữ liệu chuỗi
  3. Bạn biết mã hóa của chuỗi đó, ví dụ UTF8 hoặc ASCII

Nếu bạn thể làm cho các giả định, bạn có thể sử dụng đoạn mã sau vào cửa sổ Watch của bạn:

Encoding.UTF8.GetString((byte[])stream.GetType().GetMethod("InternalGetBuffer", BindingFlags.Instance | BindingFlags.NonPublic).Invoke(stream, null)) 

Disclaimer:
Điều này có thể có tác dụng phụ tôi đã không nghĩ hoặc có thể ném một ngoại lệ trong một số trường hợp, do đó, không sử dụng điều này trong mã sản xuất.

+0

Cảm ơn bạn rất nhiều! Điều này làm việc rất tốt! – jameskind

+0

Điều này làm việc cho tôi một khi tôi bao gồm không gian tên đầy đủ cho Mã hóa và BindingFlags – AndrewS

2

Tôi không tin rằng có điều gì chung xây dựng trong, vì QuickWatch không thường được thiết kế để ảnh hưởng đến trạng thái của những gì đang được theo dõi, và đọc từ một dòng vốn đã làm thay đổi trạng thái bên trong (ví dụ như vị trí hiện tại) - thậm chí giả định rằng luồng can be read.

Và thậm chí sau đó, không phải tất cả các luồng support seeking, do đó đọc từ luồng sẽ làm cho dữ liệu đọc không có sẵn cho chương trình thực tế, không có phương tiện khôi phục dữ liệu đó.


Trong trường hợp hạn chế, nếu bạn xây dựng MemoryStream từ một bộ đệm byte, hoặc nếu GetBuffer() được áp dụng, một chiếc đồng hồ trên đệm byte sẽ là doable, chứ không phải cố gắng để xem dòng.

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