自动属性调试

Autoproperty debugging

当我使用 auto属性 例如

public string Prop {get;set;}

编译器生成两个函数:get_Prop() 和 set_Prop(string val)。我想在此函数中的一个上设置断点。当我按函数设置断点时,这个函数名调试器永远不会进入这个函数。智能感知在我的对话框中不起作用 (Ctrl+B)

我的问题: 1)编译器在哪里保存替换为 属性 的源代码?如果它这样做。
2) 为什么 Intelisense 不起作用?
3) 如何在这个函数上设置断点?

我用的是 VS2013 Ultimate.

1) 编译器不保存源代码,它编译。隐式支持字段仅存在于 IL 代码中。

2) 这是一个功能,不是错误,我同意它可能很棒。

3) 您必须手动创建一个支持字段才能在其上放置断点。

private string _prop;
public string Prop
{
    get { return _prop; }
    set { _prop= value; }
}

这里描述了一个很好的解决方案:

Debugging automatic properties

基本上可以用Breapooint->Create New设置断点,然后放上

ClassName.set_PropertyName 要么 ClassName.get_PropertyName.

它在 Visual Studio 2015 中也可用,或者对于更早的版本,您可以使用 VS 插件(例如 Oz Code)自动执行此操作(中断 setter)