Ejemplo n.º 1
0
        /// <summary>
        /// Serializes the members.
        /// </summary>
        /// <param name="context">The context.</param>
        /// <param name="membersToSerialize">The members to serialize.</param>
        protected virtual void SerializeMembers(ISerializationContext <TSerializationContext> context, List <MemberValue> membersToSerialize)
        {
            ApiCop.UpdateRule <InitializationApiCopRule>("SerializerBase.WarmupAtStartup",
                                                         x => x.SetInitializationMode(InitializationMode.Lazy, GetType().GetSafeFullName(false)));

            if (membersToSerialize.Count == 0)
            {
                return;
            }

            using (GetCurrentSerializationScopeManager(context.Configuration))
            {
                var serializerModifiers = SerializationManager.GetSerializerModifiers(context.ModelType);

                foreach (var member in membersToSerialize)
                {
                    bool skipByModifiers = false;
                    foreach (var serializerModifier in serializerModifiers)
                    {
                        if (serializerModifier.ShouldIgnoreMember(context, context.Model, member))
                        {
                            skipByModifiers = true;
                            break;
                        }
                    }

                    if (skipByModifiers)
                    {
                        continue;
                    }

                    var memberSerializationEventArgs = new MemberSerializationEventArgs(context, member);

                    SerializingMember.SafeInvoke(this, memberSerializationEventArgs);

                    BeforeSerializeMember(context, member);

                    foreach (var serializerModifier in serializerModifiers)
                    {
                        serializerModifier.SerializeMember(context, member);
                    }

                    if (ShouldSerializeUsingParseAndToString(member, true))
                    {
                        var objectToStringValue = SerializeUsingObjectToString(context, member);
                        if (!string.IsNullOrWhiteSpace(objectToStringValue))
                        {
                            member.Value = objectToStringValue;
                        }
                    }

                    SerializeMember(context, member);

                    AfterSerializeMember(context, member);

                    SerializedMember.SafeInvoke(this, memberSerializationEventArgs);
                }
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Ends member serialization by invoking all the right events and running the modifiers.
        /// </summary>
        /// <param name="context">The serialization context.</param>
        /// <param name="member">The member that has been deserialized.</param>
        protected void EndMemberSerialization(ISerializationContext <TSerializationContextInfo> context, MemberValue member)
        {
            SerializeMember(context, member);

            AfterSerializeMember(context, member);

            SerializedMember?.Invoke(this, new MemberSerializationEventArgs(context, member));
        }
Ejemplo n.º 3
0
        public void Ctor_ParameterNotNull_PropertiesInitialized()
        {
            const string     name       = "memberName";
            const MemberType memberType = MemberType.Property;
            var serializedValue         = new SerializedValue("fef");

            var subject = new SerializedMember(name, memberType, serializedValue);

            Assert.AreEqual(name, subject.Name);
            Assert.AreEqual(memberType, subject.MemberType);
            Assert.IsTrue(ReferenceEquals(serializedValue, subject.SerializedValue));
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Serializes the members.
        /// </summary>
        /// <param name="context">The context.</param>
        /// <param name="membersToSerialize">The members to serialize.</param>
        protected virtual void SerializeMembers(ISerializationContext <TSerializationContext> context, List <MemberValue> membersToSerialize)
        {
            ApiCop.UpdateRule <InitializationApiCopRule>("SerializerBase.WarmupAtStartup",
                                                         x => x.SetInitializationMode(InitializationMode.Lazy, GetType().GetSafeFullName()));

            var scopeName = SerializationContextHelper.GetSerializationReferenceManagerScopeName();

            using (ScopeManager <ISerializer> .GetScopeManager(scopeName, () => this))
            {
                var serializerModifiers = SerializationManager.GetSerializerModifiers(context.ModelType);

                foreach (var member in membersToSerialize)
                {
                    bool skipByModifiers = false;
                    foreach (var serializerModifier in serializerModifiers)
                    {
                        if (serializerModifier.ShouldIgnoreMember(context, context.Model, member))
                        {
                            skipByModifiers = true;
                            break;
                        }
                    }

                    if (skipByModifiers)
                    {
                        continue;
                    }

                    var memberSerializationEventArgs = new MemberSerializationEventArgs(context, member);

                    SerializingMember.SafeInvoke(this, memberSerializationEventArgs);

                    BeforeSerializeMember(context, member);

                    foreach (var serializerModifier in serializerModifiers)
                    {
                        serializerModifier.SerializeMember(context, member);
                    }

                    SerializeMember(context, member);

                    AfterSerializeMember(context, member);

                    SerializedMember.SafeInvoke(this, memberSerializationEventArgs);
                }
            }
        }
        /// <summary>
        /// Serializes the members.
        /// </summary>
        /// <param name="context">The context.</param>
        /// <param name="membersToSerialize">The members to serialize.</param>
        protected virtual void SerializeMembers(ISerializationContext <TSerializationContext> context, List <MemberValue> membersToSerialize)
        {
            var serializerModifiers = SerializationManager.GetSerializerModifiers(context.ModelType);

            foreach (var member in membersToSerialize)
            {
                bool skipByModifiers = false;
                foreach (var serializerModifier in serializerModifiers)
                {
                    if (serializerModifier.ShouldIgnoreMember(context, context.Model, member))
                    {
                        skipByModifiers = true;
                        break;
                    }
                }

                if (skipByModifiers)
                {
                    continue;
                }

                var memberSerializationEventArgs = new MemberSerializationEventArgs(context, member);

                SerializingMember.SafeInvoke(this, memberSerializationEventArgs);

                BeforeSerializeMember(context, member);

                foreach (var serializerModifier in serializerModifiers)
                {
                    serializerModifier.SerializeMember(context, member);
                }

                SerializeMember(context, member);

                AfterSerializeMember(context, member);

                SerializedMember.SafeInvoke(this, memberSerializationEventArgs);
            }
        }
Ejemplo n.º 6
0
        private SerializedProperty SerializeProperty(Culture culture, Property property)
        {
            SerializedProperty serializedProperty = new SerializedProperty();
            Member             member             = this.requestHandler.Storage.GetRepository <IMemberRepository>().WithKey(property.MemberId);
            DataType           dataType           = this.requestHandler.Storage.GetRepository <IDataTypeRepository>().WithKey((int)member.PropertyDataTypeId);
            SerializedMember   serializedMember   = new SerializedMember();

            serializedMember.Code = member.Code;
            serializedMember.PropertyDataTypeStorageDataType = dataType.StorageDataType;
            serializedProperty.Member = serializedMember;

            if (dataType.StorageDataType == StorageDataType.Integer)
            {
                serializedProperty.IntegerValue = property.IntegerValue;
            }

            else if (dataType.StorageDataType == StorageDataType.Decimal)
            {
                serializedProperty.DecimalValue = property.DecimalValue;
            }

            else if (dataType.StorageDataType == StorageDataType.String)
            {
                Culture neutralCulture = this.requestHandler.GetService <ICultureManager>().GetNeutralCulture();
                string  stringValue    = member.IsPropertyLocalizable == true?
                                         this.requestHandler.GetLocalizationValue((int)property.StringValueId, culture.Id) : this.requestHandler.GetLocalizationValue((int)property.StringValueId, neutralCulture.Id);

                serializedProperty.StringValue = stringValue;
            }

            else if (dataType.StorageDataType == StorageDataType.DateTime)
            {
                serializedProperty.DateTimeValue = property.DateTimeValue;
            }

            return(serializedProperty);
        }
Ejemplo n.º 7
0
 ReflectedClassValue(Type type, object value)
 {
     _members = SerializedMember.GetOrderedSerializedMembers(type);
     Value    = value;
 }