自动属性调试
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)
当我使用 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)