C# 如何调试属性';是以VisualStudio2010为背景的吗?
假设我有这个财产C# 如何调试属性';是以VisualStudio2010为背景的吗?,c#,visual-studio,debugging,properties,breakpoints,C#,Visual Studio,Debugging,Properties,Breakpoints,假设我有这个财产 public ISetting Setting { get; set; } 如何在集合中获取断点?这样当有东西在设定值时,程序就会暂停 我试着这样做 public IDatabaseConnectionSetting ConnectionSetting { get; set; } 并将断点放在集合上行,但仍然不起作用。红色断点高亮显示整个属性声明使用完整属性而不是自动属性 快捷方式是propfull private ISetting setting;
public ISetting Setting { get; set; }
如何在集合中获取断点?这样当有东西在设定值时,程序就会暂停
我试着这样做
public IDatabaseConnectionSetting ConnectionSetting {
get;
set;
}
并将断点放在
集合上代码>行,但仍然不起作用。红色断点高亮显示整个属性声明使用完整属性而不是自动属性
快捷方式是propfull
private ISetting setting;
public ISetting Setting
{
get
{
return setting;
}
set
{
setting = value;
}
}
要使用代码段快捷方式,请键入propfull
,然后按两次TAB
。不行。自动属性的编译方式与支持存储区的编译方式类似。我认为没有理由在它们上允许断点,因为您必须在某个地方分配断点,并在那里检查您的属性
private bool TestProperty { get; set; }
编译如下
[CompilerGenerated]
private bool <TestProperty>k__BackingField;
[CompilerGenerated]
private void set_TestProperty(bool value)
{
this.<TestProperty>k__BackingField = value;
}
[CompilerGenerated]
private bool get_TestProperty()
{
return this.<TestProperty>k__BackingField;
}
[编译生成]
私人布尔·库尤·贝林菲尔德;
[编译生成]
私有void set_TestProperty(bool值)
{
this.k_uubackingfield=值;
}
[编译生成]
私有bool get_TestProperty()
{
返回此.k__BackingField;
}
这里有一个更好的解决方案:
使用Visual Studio 2008、2010、2012:
转到断点窗口
新建->在功能处中断
对于get,键入:ClassName.get\u CurrentFramesize()
对于集合,键入:ClassName.set\u CurrentFramesize(int)
当遇到断点时,您将得到一个“无可用源”,但您将在调用堆栈中得到调用>位置
我在这里找到了这个解决方案:
另见:
如果为了调试而不得不将代码更改为full属性,我会觉得很奇怪it@Louis是的,我同意,希望有人会用一种我不知道存在的新技术来回答。但是我知道很多开发人员编写的代码像var result=blah.Evaluate;返回结果代码>特别是,这样他们可以在返回行上放置断点并检查返回的内容。那是同样的事情。只是好奇,按tab键两次是什么意思?通常我会键入它,tab,type,tab,type。当我键入它并按tab
(仅一次)时,什么都不会发生,我只会键入(例如,我将以propfullint
)结束-我必须按两次tab
,然后我可以输入类型,然后是tab
,然后是字段名等。不知道为什么,这就是我的想法。它可以在任意数量的地方设置-在setter内部进行设置比在每个调用setter的地方进行设置更有用。我同意。这应该是VS的特性。我可以问一下,当您需要来自多个地方的调用setter时,您的用例是什么吗?只是好奇,谢谢。