protected virtual void TraverseDictionary(IObjectDescriptor dictionary, IObjectGraphVisitor visitor, int currentDepth, Type keyType, Type valueType) { visitor.VisitMappingStart(dictionary, keyType, valueType); bool flag = dictionary.Type.FullName.Equals("System.Dynamic.ExpandoObject"); IDictionaryEnumerator enumerator = ((IDictionary)dictionary.Value).GetEnumerator(); try { while (enumerator.MoveNext()) { DictionaryEntry current = (DictionaryEntry)enumerator.Current; string str = !flag?current.Key.ToString() : this.namingConvention.Apply(current.Key.ToString()); IObjectDescriptor objectDescriptor = this.GetObjectDescriptor(str, keyType); IObjectDescriptor descriptor2 = this.GetObjectDescriptor(current.Value, valueType); if (visitor.EnterMapping(objectDescriptor, descriptor2)) { this.Traverse(objectDescriptor, visitor, currentDepth); this.Traverse(descriptor2, visitor, currentDepth); } } } finally { IDisposable disposable = enumerator as IDisposable; if (disposable != null) { disposable.Dispose(); } } visitor.VisitMappingEnd(dictionary); }
protected virtual void TraverseDictionary <TContext>(IObjectDescriptor dictionary, IObjectGraphVisitor <TContext> visitor, int currentDepth, Type keyType, Type valueType, TContext context) { visitor.VisitMappingStart(dictionary, keyType, valueType, context); bool flag = dictionary.Type.FullName.Equals("System.Dynamic.ExpandoObject"); IDictionaryEnumerator enumerator = ((IDictionary)dictionary.Value).GetEnumerator(); try { while (enumerator.MoveNext()) { DictionaryEntry dictionaryEntry = (DictionaryEntry)enumerator.Current; object value = (!flag) ? dictionaryEntry.Key : namingConvention.Apply(dictionaryEntry.Key.ToString()); IObjectDescriptor objectDescriptor = GetObjectDescriptor(value, keyType); IObjectDescriptor objectDescriptor2 = GetObjectDescriptor(dictionaryEntry.Value, valueType); if (visitor.EnterMapping(objectDescriptor, objectDescriptor2, context)) { Traverse(objectDescriptor, visitor, currentDepth, context); Traverse(objectDescriptor2, visitor, currentDepth, context); } } } finally { IDisposable disposable; if ((disposable = (enumerator as IDisposable)) != null) { disposable.Dispose(); } } visitor.VisitMappingEnd(dictionary, context); }
private void TraverseGenericDictionary(IObjectDescriptor dictionary, Type dictionaryType, IObjectGraphVisitor visitor, int currentDepth) { var entryTypes = dictionaryType.GetGenericArguments(); // dictionaryType is IDictionary<TKey, TValue> visitor.VisitMappingStart(dictionary, entryTypes[0], entryTypes[1]); // Invoke TraverseGenericDictionaryHelper<,> traverseGenericDictionaryHelper.Invoke(entryTypes, this, dictionary.Value, visitor, currentDepth); visitor.VisitMappingEnd(dictionary); }
protected virtual void TraverseProperties(IObjectDescriptor value, IObjectGraphVisitor visitor, int currentDepth) { visitor.VisitMappingStart(value, typeof(string), typeof(object)); foreach (IPropertyDescriptor descriptor in this.typeDescriptor.GetProperties(value.Type, value.Value)) { IObjectDescriptor descriptor2 = descriptor.Read(value.Value); if (visitor.EnterMapping(descriptor, descriptor2)) { this.Traverse(new ObjectDescriptor(descriptor.Name, typeof(string), typeof(string)), visitor, currentDepth); this.Traverse(descriptor2, visitor, currentDepth); } } visitor.VisitMappingEnd(value); }
protected virtual void TraverseProperties <TContext>(IObjectDescriptor value, IObjectGraphVisitor <TContext> visitor, int currentDepth, TContext context) { visitor.VisitMappingStart(value, typeof(string), typeof(object), context); foreach (IPropertyDescriptor property in typeDescriptor.GetProperties(value.Type, value.Value)) { IObjectDescriptor value2 = property.Read(value.Value); if (visitor.EnterMapping(property, value2, context)) { Traverse(new ObjectDescriptor(property.Name, typeof(string), typeof(string)), visitor, currentDepth, context); Traverse(value2, visitor, currentDepth, context); } } visitor.VisitMappingEnd(value, context); }
private void TraverseGenericDictionary(object value, Type type, Type dictionaryType, IObjectGraphVisitor visitor) { var entryTypes = dictionaryType.GetGenericArguments(); // dictionaryType is IDictionary<TKey, TValue> visitor.VisitMappingStart(value, type, entryTypes[0], entryTypes[1]); // Invoke TraverseGenericDictionaryHelper<,> traverseGenericDictionaryHelperGeneric .MakeGenericMethod(entryTypes) .Invoke(null, new object[] { this, value, visitor }); visitor.VisitMappingEnd(value, type); }
protected virtual void TraverseProperties(IObjectDescriptor value, IObjectGraphVisitor visitor, int currentDepth) { visitor.VisitMappingStart(value, typeof(string), typeof(object)); foreach (var propertyDescriptor in typeDescriptor.GetProperties(value.Type, value.Value)) { var propertyValue = propertyDescriptor.Read(value.Value); if (visitor.EnterMapping(propertyDescriptor, propertyValue)) { Traverse(new ObjectDescriptor(propertyDescriptor.Name, typeof(string), typeof(string)), visitor, currentDepth); Traverse(propertyValue, visitor, currentDepth); } } visitor.VisitMappingEnd(value); }
protected virtual void TraverseDictionary(object value, Type type, IObjectGraphVisitor visitor, int currentDepth) { visitor.VisitMappingStart(value, type, typeof(object), typeof(object)); foreach (DictionaryEntry entry in (IDictionary)value) { var keyType = GetObjectType(entry.Key); var valueType = GetObjectType(entry.Value); if (visitor.EnterMapping(entry.Key, keyType, entry.Value, valueType)) { Traverse(entry.Key, keyType, visitor, currentDepth); Traverse(entry.Value, valueType, visitor, currentDepth); } } visitor.VisitMappingEnd(value, type); }
protected virtual void SerializeProperties(object value, Type type, IObjectGraphVisitor visitor, int currentDepth) { visitor.VisitMappingStart(value, type, typeof(string), typeof(object)); foreach (var propertyDescriptor in typeDescriptor.GetProperties(type)) { var propertyValue = propertyDescriptor.Property.GetValue(value, null); if (visitor.EnterMapping(propertyDescriptor, propertyValue)) { Traverse(propertyDescriptor.Name, typeof(string), visitor, currentDepth); Traverse(propertyValue, propertyDescriptor.Property.PropertyType, visitor, currentDepth); } } visitor.VisitMappingEnd(value, type); }
protected virtual void TraverseProperties <TContext>(IObjectDescriptor value, IObjectGraphVisitor <TContext> visitor, TContext context, Stack <ObjectPathSegment> path) { visitor.VisitMappingStart(value, typeof(string), typeof(object), context); foreach (var propertyDescriptor in typeDescriptor.GetProperties(value.Type, value.Value)) { var propertyValue = propertyDescriptor.Read(value.Value); if (visitor.EnterMapping(propertyDescriptor, propertyValue, context)) { Traverse(propertyDescriptor.Name, new ObjectDescriptor(propertyDescriptor.Name, typeof(string), typeof(string)), visitor, context, path); Traverse(propertyDescriptor.Name, propertyValue, visitor, context, path); } } visitor.VisitMappingEnd(value, context); }
protected virtual void TraverseDictionary(IObjectDescriptor dictionary, IObjectGraphVisitor visitor, int currentDepth) { visitor.VisitMappingStart(dictionary, typeof(object), typeof(object)); foreach (DictionaryEntry entry in (IDictionary)dictionary.Value) { var key = GetObjectDescriptor(entry.Key, typeof(object)); var value = GetObjectDescriptor(entry.Value, typeof(object)); if (visitor.EnterMapping(key, value)) { Traverse(key, visitor, currentDepth); Traverse(value, visitor, currentDepth); } } visitor.VisitMappingEnd(dictionary); }
private void TraverseGenericDictionary(IObjectDescriptor dictionary, Type dictionaryType, IObjectGraphVisitor visitor, int currentDepth) { var entryTypes = dictionaryType.GetGenericArguments(); // dictionaryType is IDictionary<TKey, TValue> visitor.VisitMappingStart(dictionary, entryTypes[0], entryTypes[1]); var key = Tuple.Create(entryTypes[0], entryTypes[1]); Action <FullObjectGraphTraversalStrategy, object, IObjectGraphVisitor, int, INamingConvention> action; if (!_traverseGenericDictionaryCache.TryGetValue(key, out action)) { action = GetTraverseGenericDictionaryHelper(entryTypes[0], entryTypes[1]); _traverseGenericDictionaryCache[key] = action; } action(this, dictionary.Value, visitor, currentDepth, _namingConvention ?? new NullNamingConvention()); visitor.VisitMappingEnd(dictionary); }
protected virtual void TraverseDictionary<TContext>(IObjectDescriptor dictionary, IObjectGraphVisitor<TContext> visitor, int currentDepth, Type keyType, Type valueType, TContext context) { visitor.VisitMappingStart(dictionary, keyType, valueType, context); var isDynamic = dictionary.Type.FullName.Equals("System.Dynamic.ExpandoObject"); foreach (DictionaryEntry entry in (IDictionary)dictionary.Value) { var keyString = isDynamic ? namingConvention.Apply(entry.Key.ToString()) : entry.Key; var key = GetObjectDescriptor(keyString, keyType); var value = GetObjectDescriptor(entry.Value, valueType); if (visitor.EnterMapping(key, value, context)) { Traverse(key, visitor, currentDepth, context); Traverse(value, visitor, currentDepth, context); } } visitor.VisitMappingEnd(dictionary, context); }
protected virtual void TraverseDictionary <TContext>(IObjectDescriptor dictionary, IObjectGraphVisitor <TContext> visitor, Type keyType, Type valueType, TContext context, Stack <ObjectPathSegment> path) { visitor.VisitMappingStart(dictionary, keyType, valueType, context); var isDynamic = dictionary.Type.FullName.Equals("System.Dynamic.ExpandoObject"); foreach (DictionaryEntry entry in (IDictionary)dictionary.Value) { var keyValue = isDynamic ? namingConvention.Apply(entry.Key.ToString()) : entry.Key; var key = GetObjectDescriptor(keyValue, keyType); var value = GetObjectDescriptor(entry.Value, valueType); if (visitor.EnterMapping(key, value, context)) { var keyAsString = TypeConverter.ChangeType <string>(key); Traverse(keyValue, key, visitor, context, path); Traverse(keyValue, value, visitor, context, path); } } visitor.VisitMappingEnd(dictionary, context); }
protected virtual void TraverseDictionary <TContext>(IObjectDescriptor dictionary, IObjectGraphVisitor <TContext> visitor, Type keyType, Type valueType, TContext context, Stack <ObjectPathSegment> path) { visitor.VisitMappingStart(dictionary, keyType, valueType, context); var isDynamic = dictionary.Type.FullName !.Equals("System.Dynamic.ExpandoObject"); #pragma warning disable CS8605 // Unboxing a possibly null value. Iterating IDictionary should not return nulls. foreach (DictionaryEntry entry in (IDictionary)dictionary.NonNullValue()) #pragma warning restore CS8605 // Unboxing a possibly null value. { var keyValue = isDynamic ? namingConvention.Apply(entry.Key.ToString() !) : entry.Key; var key = GetObjectDescriptor(keyValue, keyType); var value = GetObjectDescriptor(entry.Value, valueType); if (visitor.EnterMapping(key, value, context)) { var keyAsString = TypeConverter.ChangeType <string>(key); Traverse(keyValue, key, visitor, context, path); Traverse(keyValue, value, visitor, context, path); } } visitor.VisitMappingEnd(dictionary, context); }
public virtual void VisitMappingEnd(IObjectDescriptor mapping) { nextVisitor.VisitMappingEnd(mapping); }
public virtual void VisitMappingEnd(object mapping, Type mappingType) { nextVisitor.VisitMappingEnd(mapping, mappingType); }
public virtual void VisitMappingEnd(IObjectDescriptor mapping, IEmitter context) { nextVisitor.VisitMappingEnd(mapping, context); }
protected virtual void TraverseDictionary(IObjectDescriptor dictionary, IObjectGraphVisitor visitor, int currentDepth, Type keyType, Type valueType) { visitor.VisitMappingStart(dictionary, keyType, valueType); var isDynamic = dictionary.Type.FullName.Equals("System.Dynamic.ExpandoObject"); foreach (DictionaryEntry entry in (IDictionary)dictionary.Value) { var keyString = isDynamic ? namingConvention.Apply(entry.Key.ToString()) : entry.Key.ToString(); var key = GetObjectDescriptor(keyString, keyType); var value = GetObjectDescriptor(entry.Value, valueType); if (visitor.EnterMapping(key, value)) { Traverse(key, visitor, currentDepth); Traverse(value, visitor, currentDepth); } } visitor.VisitMappingEnd(dictionary); }