public void ScanChildren(ContentTypeSerializer.ChildCallback callback, object collection)
 {
     foreach (var item in (IEnumerable)collection)
     {
         if (item != null)
         {
             callback(_contentSerializer, item);
         }
     }
 }
Exemple #2
0
        public void ScanElements(ContentTypeSerializer.ChildCallback callback, object collection)
        {
            this.ValidateCollectionType(collection);
            IEnumerable enumerable = (IEnumerable)collection;

            foreach (object current in enumerable)
            {
                if (current != null)
                {
                    callback(this.contentSerializer, current);
                }
            }
        }
        private IEnumerable <string> GetAllUsedNamespaces <T>(T value)
        {
            var result = new List <string>();

            ContentTypeSerializer.ChildCallback onScanChild = (contentTypeSerializer, child) =>
            {
                if (child == null)
                {
                    return;
                }

                var childType = child.GetType();

                if (contentTypeSerializer.TargetType == childType)
                {
                    return;
                }

                if (contentTypeSerializer.TargetType.IsGenericType &&
                    contentTypeSerializer.TargetType.GetGenericTypeDefinition() == typeof(Nullable <>) &&
                    contentTypeSerializer.TargetType.GetGenericArguments()[0] == childType)
                {
                    return;
                }

                if (_serializer.HasTypeAlias(childType))
                {
                    return;
                }

                var childNamespace = childType.Namespace;

                if (string.IsNullOrEmpty(childNamespace))
                {
                    return;
                }

                result.Add(childNamespace);
            };

            // Force top-level object type to be included.
            onScanChild(_serializer.GetTypeSerializer(typeof(object)), value);

            // Scan child objects.
            var serializer = _serializer.GetTypeSerializer(typeof(T));

            serializer.ScanChildren(_serializer, onScanChild, value);

            return(result);
        }
        public void ScanValue(ContentTypeSerializer.ChildCallback callback, object parent)
        {
            object obj = this.valueGetter(parent);

            if (obj == null)
            {
                return;
            }
            if (this.formatAttribute.SharedResource)
            {
                callback(null, obj);
                return;
            }
            callback(this.typeSerializer, obj);
        }
Exemple #5
0
 protected internal override void ScanChildren(IntermediateSerializer serializer, ContentTypeSerializer.ChildCallback callback, T[] value)
 {
     this.arrayHelper.ScanElements(callback, value);
 }
Exemple #6
0
 protected internal override void ScanChildren(IntermediateSerializer serializer, ContentTypeSerializer.ChildCallback callback, List <T> value)
 {
     this.collectionHelper.ScanElements(callback, value);
 }
Exemple #7
0
 /// <summary>Examines the children of the specified object, passing each to a callback delegate.</summary>
 /// <param name="serializer">The content serializer.</param>
 /// <param name="callback">The method to be called for each examined child.</param>
 /// <param name="value">The object whose children are being scanned.</param>
 protected internal override void ScanChildren(IntermediateSerializer serializer, ContentTypeSerializer.ChildCallback callback, object value)
 {
     this.ScanChildren(serializer, callback, ContentTypeSerializer <T> .CastType(value));
 }
Exemple #8
0
 /// <summary>Examines the children of the specified object, passing each to a callback delegate.</summary>
 /// <param name="serializer">The content serializer.</param>
 /// <param name="callback">The method to be called for each examined child.</param>
 /// <param name="value">The strongly typed object whose children are being scanned.</param>
 protected internal virtual void ScanChildren(IntermediateSerializer serializer, ContentTypeSerializer.ChildCallback callback, T value)
 {
 }
 protected internal override void ScanChildren(IntermediateSerializer serializer, ContentTypeSerializer.ChildCallback callback, object value)
 {
     if (this.baseSerializer != null)
     {
         this.baseSerializer.ScanChildren(serializer, callback, value);
     }
     foreach (ReflectiveSerializerMemberHelper current in this.memberHelpers)
     {
         current.ScanValue(callback, value);
     }
     if (this.collectionHelper != null)
     {
         this.collectionHelper.ScanElements(callback, value);
     }
 }
Exemple #10
0
 protected internal override void ScanChildren(IntermediateSerializer serializer, ContentTypeSerializer.ChildCallback callback, Dictionary <Key, Value> value)
 {
     foreach (KeyValuePair <Key, Value> current in value)
     {
         callback(this.keySerializer, current.Key);
         callback(this.valueSerializer, current.Value);
     }
 }