c# - Mono 说 int 是 List<dynamic>

标签 c# dynamic casting mono

我一直在努力将 .NET 代码转换为 Mono。除此部分外,一切正常:

enter image description here

如您所见,value是整数。 Mono 说 int 是 List<dynamic> (查看 b 的值)。然后 if 语句转到 else if 部分,然后在第 129 行抛出异常,因为 int 不能转换为 List。在 .NET 中,else if 部分被正确评估为 false。请问有人可以帮忙吗?

这是一个可复制的代码:)

public static StringBuilder JsonValueToString(dynamic value, StringBuilder sb)
{
    if (value is JsonObject)
    {
        return value.BuildString(sb);
    }
    else if (value is List<dynamic>)
    {
        var xs = (List<dynamic>) value;
        sb.Append("[");
        for (int i = 0; i < xs.Count; ++i)
        {
            if (i > 0) sb.Append(", ");
            JsonValueToString(xs[i], sb);
        }
        sb.Append("]");
    }
    else
    {
        sb.Append(value.ToString());
        sb.Append(" ");
    }
    return sb;
}

//编辑:添加了更好的图片。

//EDIT2:添加了一个代码片段。

最佳答案

我使用的是 Mono 3.2.8。更新到 Mono 3.10 解决了这个问题。

关于c# - Mono 说 int 是 List<dynamic>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26205393/

相关文章:

c# - 在 C# 中使用 P/Invoke 注册 _set_purecall_handler 函数

c# - 以编程方式更新 Excel 文档

c# - 当访问存储在动态中的对象的值类型属性时,是否会导致对这些属性的值进行装箱?

for 循环中 pow() 的编译器错误

c# - 从 javascript 更改标签文本

c# - 未知的网络方法。参数名称: methodName in web services

angular - 即时添加/删除组件

c++ - 将动态数组/矩阵传递给函数进行初始化

SQL在不知道列的情况下将行选择到字符串变量中

java - 如何将 List<Map<?, ?>> 转换为 List<Map<String, String>>?