【发布时间】:2016-07-15 08:54:55
【问题描述】:
我正在为我的 API 编写一些系统测试。因为我想捕捉向后兼容性问题,所以我没有引用合同模型,而是使用动态。
在代码中,我可以窥探动态对象的属性;但是,如果我尝试在监视窗口中评估相同的表达式,则会失败并出现以下错误:
错误 CS1061:“对象”不包含 'productDefinitionId' 并且没有扩展方法接受第一个 可以找到“对象”类型的参数(您是否缺少指令 还是程序集参考?)
在快速观看/立即窗口中也是如此。我记得能够做到这一点,但我最近升级到了 VS2015,因此使用了新的 Roslyn 编译器(尽管我仍在使用 C# 5.0)——可能是这样吗?如果有,为什么?
更新:
public dynamic LastAddedOrEditedProduct { get; private set; }
private void SetProductResponse(HttpResponseMessage response)
{
var result = response.Content.ReadAsStringAsync().Result;
LastAddedOrEditedProduct = JsonConvert.DeserializeObject<dynamic>(result);
}
其中结果是类似 JSON 的
{
"productDefinitionId": 222
}
【问题讨论】:
-
检查表达式评估器的overview。当您在 watch\immidiate 窗口中编写表达式时,就会发生这种情况。
-
你能贴出重现问题的代码吗?
-
@AlekseyL。 - 我已经更新了问题
-
无法使用任何调试设置组合进行重现。 “我仍在使用 C#5”是什么意思?
-
@IvanStoev 我的目标仍然是 .NET Framework 4.5.1
标签: c# .net visual-studio-2015 visual-studio-debugging roslyn