我正在使用 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返回结果,如下所示
dynamic data = new
{
ResultType = "Place",
Data = new
{
Name = place.Name,
Address = place.Address,
}
};
另一种类型可能是Data
子类型
然后我将这些data
对象添加到List对象,它工作得很好,我可以在调试中看到结果,
但是一旦我去了序列化程序,就会给我这个错误
你能帮助我吗?编辑: 我通过使用 Dictionary 而不是 List 部分地解决了这个问题,其中我使用Key作为对象类型,使用Value作为结果行
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,
.....
}
}]
}
但我仍在寻求更好的解决方案