public unsafe void Populate(FLArrayIterator iterator, SharedStringCache sharedStrings) { var i = iterator; var serializer = JsonSerializer.CreateDefault(); var count = Native.FLArrayIterator_GetCount(&i); Results = Activator.CreateInstance(_elementType.MakeArrayType(), (int)count); for (var index = 0U; index < count; index++) { using (var reader = new JsonFLValueReader(Native.FLArrayIterator_GetValueAt(&i, index), sharedStrings)) { (Results as IList)[(int)index] = serializer.Deserialize(reader); } } }
public unsafe void Populate(FLArrayIterator iterator, SharedStringCache sharedStrings) { var iter = iterator; var serializer = JsonSerializer.CreateDefault(); var parameters = new List <object>(); for (var i = 0U; i < Native.FLArrayIterator_GetCount(&iter); i++) { using (var reader = new JsonFLValueReader(Native.FLArrayIterator_GetValueAt(&iter, i), sharedStrings)) { var nextItem = serializer.Deserialize(reader, _constructor.GetParameters()[(int)i].ParameterType); parameters.Add(nextItem); } } Results = _constructor.Invoke(parameters.ToArray()); }
private unsafe T GetCurrent <T>(ISelectResultContainer resultContainer) { if (resultContainer != null) { resultContainer.Populate(_queryEnum->columns, _db.SharedStrings); return((T)resultContainer.Results); } else { var val = Native.FLArrayIterator_GetValueAt(&_queryEnum->columns, 0); using (var reader = new JsonFLValueReader(val, _db.SharedStrings)) { var serializer = JsonSerializer.CreateDefault(); return(serializer.Deserialize <T>(reader)); } } }