我正在使用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,
.....
}
}]
}
但我仍在寻求更好的解决方案