Catel.Runtime.Serialization.SerializationManager.GetSerializerModifiers C# (CSharp) Method

GetSerializerModifiers() public method

Gets the serializer modifiers for the specified type. Note that the order is important because the modifiers will be called in the returned order during serialization and in reversed order during deserialization.
The is null.
public GetSerializerModifiers ( Type type ) : ISerializerModifier[]
type System.Type The type.
return ISerializerModifier[]
        public virtual ISerializerModifier[] GetSerializerModifiers(Type type)
        {
            Argument.IsNotNull("type", type);

            return _serializationModifiersPerTypeCache.GetFromCacheOrFetch(type, () =>
            {
                var serializers = new List<ISerializerModifier>();
                var serializerModifierTypes = FindSerializerModifiers(type);

                foreach (var serializerModifierType in serializerModifierTypes)
                {
                    var innerAttribute = serializerModifierType;
                    serializers.Add(_serializerModifierCache.GetFromCacheOrFetch(serializerModifierType, () =>
                    {
                        return (ISerializerModifier)_typeFactory.CreateInstance(serializerModifierType);
                    }));
                }

                return serializers.ToArray();
            });
        }

Usage Example

        /// <summary>
        /// Serializes the specified model.
        /// </summary>
        /// <param name="model">The model.</param>
        /// <param name="context">The context.</param>
        public virtual void Serialize(ModelBase model, TSerializationContext context)
        {
            Argument.IsNotNull("model", model);
            Argument.IsNotNull("context", context);

            using (var finalContext = GetContext(model, context, SerializationContextMode.Serialization))
            {
                var serializerModifiers = SerializationManager.GetSerializerModifiers(finalContext.ModelType);

                Log.Debug("Using '{0}' serializer modifiers to deserialize type '{1}'", serializerModifiers.Length, finalContext.ModelType.GetSafeFullName());

                var serializingEventArgs = new SerializationEventArgs(finalContext);

                Serializing.SafeInvoke(this, serializingEventArgs);

                foreach (var serializerModifier in serializerModifiers)
                {
                    serializerModifier.OnSerializing(finalContext, model);
                }

                BeforeSerialization(finalContext);

                var members = GetSerializableMembers(model);
                SerializeMembers(finalContext, members);

                AfterSerialization(finalContext);

                foreach (var serializerModifier in serializerModifiers)
                {
                    serializerModifier.OnSerialized(finalContext, model);
                }

                Serialized.SafeInvoke(this, serializingEventArgs);
            }
        }
All Usage Examples Of Catel.Runtime.Serialization.SerializationManager::GetSerializerModifiers