【问题标题】:missing property in dynamics treated different in asp.net?在 asp.net 中处理不同的动力学中的缺失属性?
【发布时间】:2011-08-17 07:44:30
【问题描述】:

我正在查看 Rob Manatee。在将 json 迁移转换为动态对象后,他检查是否存在这样的属性:

            if (col.nullable != null) {
                if (col.nullable) {
                    sb.Append(" NULL ");
                } else {
                    sb.Append(" NOT NULL ");
                }
            } else {
                sb.Append(" NULL ");
            }

当我尝试将其编译到 wpf 应用程序中时,第一行出现异常:

'System.Dynamic.ExpandoObject' 确实 不包含定义 '可空'

那么,为什么在 asp.net 设置中使用它会起作用?还是这跟 WebMatrix 有关系?

【问题讨论】:

  • 当他们的动态对象由驻留在与访问它的程序集不同的程序集中的匿名类型支持时,我看到人们遇到类似的问题。这可能与它有关。
  • 我正在使用 JsonFx 将 json 解码为动态。这会算作不同程序集中的匿名类型支持的对象吗? Rob 使用 webmatrix 中可用的 json 助手来完成相同的工作。为什么会有不同?

标签: c# .net asp.net dynamic


【解决方案1】:

问题是 webmatrix 使用它自己的动态类型而不是扩展。如果从未设置过值,则使用expando,它将抛出异常而不是返回null。我不确定 json fx 是否会让你像这个对象一样使用不同的“expando”

.net DynamicObject implementation that returns null for missing properties rather than a RunTimeBinderException

另一种选择是捕获混乱成员的异常。

【讨论】:

    猜你喜欢
    • 2016-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-31
    • 1970-01-01
    • 2014-11-24
    • 2017-06-23
    • 2012-11-07
    相关资源
    最近更新 更多