动态中缺少的属性在asp.net中处理方式不同

本文关键字:net 处理 asp 方式不 属性 动态 | 更新日期: 2023-09-27 17:54:33

我在看罗布·海牛。在将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有关?

动态中缺少的属性在asp.net中处理方式不同

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

.net DynamicObject实现,为丢失的属性返回null,而不是RunTimeBinderException

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