开发者

Flatten inherited members in Visual Studio's Watch window?

开发者 https://www.devze.com 2022-12-20 05:45 出处:网络
Is there some way to make the Watch window display all inherited properties and fields in one long flat list, rather than hidden behind a nested \"base\" node?

Is there some way to make the Watch window display all inherited properties and fields in one long flat list, rather than hidden behind a nested "base" node?

I'm debugging some C# code that makes massive use of inheritance - some of the properties I want to watch are behind three levels of "base" in the Watch window. This would be mo开发者_高级运维re or less bearable if I just wanted to examine a single such object, but I'm actually looking at a tree of them...


see http://blogs.msdn.com/b/jaredpar/archive/2010/02/19/flattening-class-hierarchies-when-debugging-c.aspx

UPDATE: I wrote a commercial tool called OzCode that solves this problem. The idea is that if you're interested in a property of the base class, you can "Star" that property, which causes the property to appear at the top of members list, and also in the text of its parent.

So for example, in the following scenario, I had to expand two base nodes to get to see the properties I wanted, "Important" and "Interesting":

Flatten inherited members in Visual Studio's Watch window?

But once I star these properties, they will always appear at the top, even when viewing variables of the Derived type, so I'll see:

Flatten inherited members in Visual Studio's Watch window?

These stars are persisted and will be shown whenever you view a an object of that type in the DataTip or QuickWatch window from that moment on, so the next time you a variable of that type, you won't need to expand those "base" nodes. And because starred values appear as the parent node's text, if you're looking at a tree datastructure of these heavily nested objects (as you stated you were), you will be able to see these properties without even expanding the nodes at all.

FULL DISCLOSURE: I'm the co-author of the tool I've described here.


Not as such. You see, it is a feature! The ability to see where a property comes from is important most of the time.

I understand your pain though. There are some work arounds. First, you can just put the object.property in the watch window. This will just display the property you are looking for. It is great for digging into a specific property but not so much for getting all the others.

You can also try (BaseClass)object. This will cast it to the base object that contains the property (properties?) you are looking for. Again it is great for looking a a specific subset of properties but completly hides all the others.

Good luck and good hunting.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号