示例#1
0
                static void FillStack(BlittableJsonReader reader, int numberOfItems)
                {
                    var stackField     = reader.GetType().BaseType.GetField("_stack", BindingFlags.Instance | BindingFlags.NonPublic);
                    var stackFieldItem = stackField.FieldType.GetGenericArguments()[0];

                    var stack = (IList)stackField.GetValue(reader);

                    while (stack.Count < numberOfItems)
                    {
                        var item      = Activator.CreateInstance(stackFieldItem);
                        var typeField = item.GetType().GetField("Type", BindingFlags.Instance | BindingFlags.NonPublic);
                        typeField.SetValue(item, 1); // :)

                        var propertyNameField = item.GetType().GetField("PropertyName", BindingFlags.Instance | BindingFlags.NonPublic);
                        propertyNameField.SetValue(item, $"Field_{stack.Count}");

                        stack.Add(item);
                    }
                }