/// <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); } } }
/// <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)); }
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)); }
/// <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); } }
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); }
ReflectedClassValue(Type type, object value) { _members = SerializedMember.GetOrderedSerializedMembers(type); Value = value; }