2

我正在使用ServiceStack.Text库来序列化动态生成的对象(匿名类型)

它像魅力一样工作,但有一种情况它给了我以下错误

Unable to cast object of type '<>f__AnonymousType14`2[System.String,<>f__AnonymousType2`10[System.String,System.String,System.String,System.String,System.Int32,System.Int32,System.Int32,System.String,System.String,System.String]]' to type '<>f__AnonymousType14`2[System.String,<>f__AnonymousType13`3[System.String,System.Int32,System.String]]'.

情况是,这是一种搜索方法,它使用关键字在不同类型的数据中进行搜索,并使用 c# 动态返回结果,如下所示

dynamic data = new
                {
                 ResultType = "Place",
                 Data = new
                         {
                          Name = place.Name,
                          Address = place.Address,
                         }
                 };

Data另一种类型可能是这样的,在子类型中具有或多或少的属性

然后我将这些data对象添加到 List 对象中,效果很好,我可以在调试中看到结果,

在此处输入图像描述

但是一旦我转到序列化程序,它就会给我这个错误

你可以帮帮我吗 ..

编辑:我通过使用字典而不是列表部分解决了这个问题,其中我使用对象类型的键和结果行的值

var dicResult = new Dictionary<string, dynamic>();
....
dicResult.Add("Category", new
                                      {
                                        Foo = "bar",
                                        .....
                                      }

dicResult.Add("Place", new
                                      {
                                        FooInt = 123,
                                        .....
                                      }

结果是这样的

{
    .....
    "Data": [
        {
            "Key": "Category",
            "Value": {
                "Foo": "bar",
                ....  
            }
        },
        {
            "Key": "Place",
            "Value": {
                "FooInt": 123,
                .....
             }
        }]
}

但我仍在寻求更好的解决方案

4

0 回答 0