XML Serializing dapper结果

Par*_*roX 5 c# xml generics serialization dapper

我将SQL结果存储到动态List中,该List具有基础DapperRow类型.我正在尝试序列化/反序列化哪个XMLserializer抱怨的List:

There was an error generating the XML document. ---> System.InvalidOperationException: To be XML serializable, types which inherit from IEnumerable must have an implementation of Add(System.Object) at all levels of their inheritance hierarchy. Dapper.SqlMapper+DapperRow does not implement Add(System.Object).

有没有办法解决这个问题(除了明显将结果转换为我自己的具体对象),还是可以以某种方式使DapperRow对象符合System.Xml.XMLserializer约束?

它声明我的结果数组是System.Collections.Generic.List<dynamic> {System.Collections.Generic.List<object>} 打开数组,它说每个对象都是类型object {Dapper.SqlMapper.DapperRow}

我想是因为DapperRows现在基本上IDictionary<string, object>XML是有问题(我不能使用任何东西,但System.Xml.XmlSerializer这样不建议替代).

我只是希望能够把一个List<dynamic>我从小巧玲珑的获得和序列化和反序列化使用正确System.Xml.XmlSerializer

Par*_*roX 1

我能够通过使用可序列化字典获得至少可序列化的东西:http://weblogs.asp.net/pwelter34/444961

            var results = conn.Query<dynamic>(sql, param);
            var resultSet = new List<SerializableDictionary<string, object>>();
            foreach (IDictionary<string, object> row in results)
            {
                var dict = new SerializableDictionary<string, object>();
                foreach (var pair in row)
                {
                    dict.Add(pair.Key, pair.Value);
                }
                resultSet.Add(dict);
            }
Run Code Online (Sandbox Code Playgroud)

它很难看,所以我希望出现更优雅的解决方案