【发布时间】:2015-08-28 17:35:04
【问题描述】:
这是函数:
public void Init(System.Type Type) {
this.Type = Type;
BuildFieldAttributes();
BuildDataColumns(FieldAttributes);
}
我在第一行 (this.Type = Type) 设置了一个断点,我想在 Type.FullName == "Malt.Organisation" 时中断,所以这就是我输入的条件。
但是在命中该行时会显示以下错误:
断点的条件未能执行。条件是 'Type.FullName == "Malt.Organisation"'。返回的错误是 '在 System.Type 类型的被调试对象中检查对象的状态 在这种情况下不支持。'
我做错了什么(明显的)事情?
PS。一种解决方法是将其添加到代码中:
if (Type.FullName == "Malt.Organisation") System.Diagnostics.Debugger.Break();
【问题讨论】:
-
可能不相关,但您是否将
RunTimeTypeor aType传递到您的方法中? -
调试器对此非常明确:“我们还不支持”。在 VS2015 中也没有,多亏了 Roslyn,它应该有更好的表现。如果它永远是您无法在此处得到回答的问题,则必须询问 Microsoft。他们不善于做出承诺。
-
我强烈建议您不要使用 Type 作为变量名或属性名。这将不可避免地导致冲突,因为您的变量也是众所周知的类型的名称。如果将 Type 重命名为 type 和/或 theType 是否有效?
-
@HansPassant:“调试器对此非常明确” - 我不同意,因为不清楚“那个”是什么。
System.Type作为一个有成员的班级有什么特别之处吗?是否存在由于某种原因无法检查的任意类型列表?无论如何,什么是“这个背景”?在什么情况下正在检查支持System.Type类型的对象的状态?因此,消息只是说“出了点问题。”,但它没有暗示可能是什么什么。 -
@stephen.vakil:我并不是说不存在混淆的可能性,但微软似乎并不认同你的担忧:
System.Web.UI.WebControls.BaseCompareValidator.Type、System.Linq.Expressions.Expression.Type、System.Drawing.Imaging.PropertyItem.Type。跨度>