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));
         }
     }
 }