C# vs2010监视窗口:将某些成员打印到父节点

C# vs2010监视窗口:将某些成员打印到父节点,c#,visual-studio-2010,window,watch,C#,Visual Studio 2010,Window,Watch,首先,请看截图 这是VS2010的一个观察窗口 我想将结构/类的一些子成员上移到父级的值字段中,以便于调试。(用C#表示) 有可能吗?您有权访问MeanItem类的源代码吗?如果是这样,您可以重写ToString()方法以返回MeanItem.Content的值,该值应该会显示出来(而不是UOC.DicData.MeanItem)。是,对于您正在编写的类 使用DebuggerDisplay属性: [DebuggerDisplay("N: {Name}; A1: {Address1}; A2:

首先,请看截图

这是VS2010的一个观察窗口

我想将结构/类的一些子成员上移到父级的值字段中,以便于调试。(用C#表示)


有可能吗?

您有权访问MeanItem类的源代码吗?如果是这样,您可以重写ToString()方法以返回MeanItem.Content的值,该值应该会显示出来(而不是UOC.DicData.MeanItem)。

是,对于您正在编写的类

使用
DebuggerDisplay
属性:

[DebuggerDisplay("N: {Name}; A1: {Address1}; A2: {Address2}; C: {City}; S: {State}; Z: {ZipCode}; P: {Phone}; F: {Fax}")]
internal class EntityAddress
{
...
}
或者为了您更简单的使用:

[DebuggerDisplay("{Content}")]
class MeanItem
{
...
}
其中,每个括号内的项都是对象上的属性。使用此属性创建的字符串将完全按照您的需要显示


MSDN文档:

在MeanItem类上方添加DebuggerDisplay属性。比如:

[DebuggerDisplay("Content={Content}")]
public class MeanItem
{
...

{}之间的值是要在调试器中显示的属性的名称。

您在示例中指向的区域只是对象的
ToString
表示(默认情况下,它显示类名)

您可以在类中重写ToString并返回内容

public override string ToString()
{
   return Content;
}

如果您在其他地方期望一个不同的、特定的
ToString()
行为,则此操作将中断。如果您在其他地方期望一个不同的、特定的
ToString()
行为,则此操作将中断。@BQ-毫无疑问,
DebuggerDisplayAttribute
是正确的选择。我把这个留在这里作为备用。@Jaimec,没问题。这在大多数情况下都很有效。除非它没有,它真的没有。留下评论只是为了让别人不会认为他们是对等的或者这更容易。