Есть ли способ использовать FastMember ObjectReader.Create
над списком ExpandoObject
.
Вот простой тестовый пример, который я сделал для проверки:
using FastMember;
using System;
using System.Collections.Generic;
using System.Data;
using System.Dynamic;
using System.Linq;
namespace TestReaderAsync
{
class Program
{
static void Main()
{
List<ExpandoObject> expandos = new List<ExpandoObject>();
var first = GetExpando();
var second = GetExpando();
expandos.Add(first);
expandos.Add(second);
var keys = (first as IDictionary<string, object>).Keys;
using (var reader = ObjectReader.Create(expandos, keys.ToArray()))
{
var dt = new DataTable();
dt.Load(reader);
}
}
private static ExpandoObject GetExpando()
{
ExpandoObject exp = new ExpandoObject();
exp.TryAdd("ID", "A");
exp.TryAdd("ID_2", "B");
exp.TryAdd("DATE", DateTime.Now);
exp.TryAdd("MONTH", 5);
return exp;
}
}
}
Кажется,проблема заключается в функции GetMembers
в TypeAccessor
.Поскольку ExpandoObject
наследуется от IDictionary<string, object>
, тип не имеет свойств, и FastMember не может сериализовать каждый ключ словаря.Есть ли обходной путь для достижения этого?
По сути, я выполняю SQL-запросы, которые были переведены в расширения.Я хочу использовать ObjectReader
для массового возврата результата в базу данных.