protected override object GetDataToSerialize(PropertyChangeTrackingObject outerObject) { return(new PropertyChangeTrackingObject.EntitySerializationData { ChangedProperties = outerObject.propertyBag, OriginalTypeName = outerObject.GetType().FullName, OriginalTypeAssembly = outerObject.GetType().Assembly.FullName }); }
protected override object GetDataToSerialize(PropertyChangeTrackingObject outerObject) { PropertyChangeTrackingObject.EntityLoggingData result = null; if (outerObject.loggableProperties.Count > 0) { result = new PropertyChangeTrackingObject.EntityLoggingData { Properties = outerObject.loggableProperties }; } return(result); }
public object GetObjectToSerialize(object obj, Type targetType) { PropertyChangeTrackingObject propertyChangeTrackingObject = obj as PropertyChangeTrackingObject; if (propertyChangeTrackingObject != null) { return(this.GetDataToSerialize(propertyChangeTrackingObject)); } if (obj is ExDateTime) { return(new PropertyChangeTrackingObject.SerializableExDateTime((ExDateTime)obj)); } return(obj); }
public override object GetDeserializedObject(object obj, Type targetType) { PropertyChangeTrackingObject.EntitySerializationData entitySerializationData = obj as PropertyChangeTrackingObject.EntitySerializationData; if (entitySerializationData != null) { string originalTypeName = entitySerializationData.OriginalTypeName; Type type = Type.GetType(originalTypeName, false); if (type == null) { string originalTypeAssembly = entitySerializationData.OriginalTypeAssembly; Assembly assembly = Assembly.Load(originalTypeAssembly); type = assembly.GetType(originalTypeName); } if (type == null) { throw new CorruptDataException(Strings.ErrorUnknownType(originalTypeName)); } Type typeFromHandle = typeof(PropertyChangeTrackingObject); if (!typeFromHandle.IsAssignableFrom(type)) { throw new CorruptDataException(Strings.ErrorNonEntityType(originalTypeName, typeFromHandle.Name)); } try { PropertyChangeTrackingObject propertyChangeTrackingObject = (PropertyChangeTrackingObject)Activator.CreateInstance(type); propertyChangeTrackingObject.propertyBag = ((PropertyChangeTrackingObject.EntitySerializationData)obj).ChangedProperties; return(propertyChangeTrackingObject); } catch (MissingMethodException) { throw new CorruptDataException(Strings.ErrorNoDefaultConstructor(originalTypeName)); } } PropertyChangeTrackingObject.SerializableExDateTime serializableExDateTime = obj as PropertyChangeTrackingObject.SerializableExDateTime; if (serializableExDateTime != null) { return(serializableExDateTime.ToExDateTime()); } return(obj); }
protected abstract object GetDataToSerialize(PropertyChangeTrackingObject outerObject);