- Timestamp:
- 03/19/09 13:30:58 (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/New Persistence Exploration/Persistence/Persistence/Core/Serializer.cs
r1360 r1361 45 45 yield return iterator.Current; 46 46 } 47 48 47 49 48 private IEnumerator<ISerializationToken> Serialize(DataMemberAccessor accessor) { 50 49 object value = accessor.Get(); 51 50 if (value == null) 52 return NullReferenceEnumerat ion(accessor.Name);51 return NullReferenceEnumerator(accessor.Name); 53 52 if (obj2id.ContainsKey(value)) 54 return Reference TokenEnumeration(accessor.Name, obj2id[value]);53 return ReferenceEnumerator(accessor.Name, obj2id[value]); 55 54 if ( ! typeCache.ContainsKey(value.GetType())) 56 55 typeCache.Add(value.GetType(), typeCache.Count); … … 63 62 IFormatter formatter = configuration.GetFormatter(value.GetType()); 64 63 if (formatter != null) 65 return PrimitiveEnumerat ion(accessor.Name, typeId, formatter.DoFormat(value), id);64 return PrimitiveEnumerator(accessor.Name, typeId, formatter.DoFormat(value), id); 66 65 IDecomposer decomposer = configuration.GetDecomposer(value.GetType()); 67 66 if (decomposer != null) 68 return CompositeEnumerat ion(accessor.Name, decomposer.DeCompose(value), id, typeId);69 return StorableEnumerat ion(accessor.Name, value, id, typeId);67 return CompositeEnumerator(accessor.Name, decomposer.DeCompose(value), id, typeId); 68 return StorableEnumerator(accessor.Name, value, id, typeId); 70 69 } 71 70 72 private IEnumerator<ISerializationToken> NullReferenceEnumerat ion(string name) {71 private IEnumerator<ISerializationToken> NullReferenceEnumerator(string name) { 73 72 yield return new NullReferenceToken(name); 74 73 } 75 74 76 private IEnumerator<ISerializationToken> Reference TokenEnumeration(string name, int id) {75 private IEnumerator<ISerializationToken> ReferenceEnumerator(string name, int id) { 77 76 yield return new ReferenceToken(name, id); 78 77 } 79 78 80 private IEnumerator<ISerializationToken> PrimitiveEnumeration(string name, int typeId, object serializedValue, int? id) { 79 private IEnumerator<ISerializationToken> PrimitiveEnumerator(string name, 80 int typeId, object serializedValue, int? id) { 81 81 yield return new PrimitiveToken(name, typeId, serializedValue, id); 82 82 } 83 83 84 private IEnumerator<ISerializationToken> CompositeEnumeration(string name, IEnumerable values, int? id, int typeId) { 84 private IEnumerator<ISerializationToken> CompositeEnumerator(string name, 85 IEnumerable values, int? id, int typeId) { 85 86 yield return new BeginToken(name, typeId, id); 86 87 foreach (object o in values) { … … 92 93 } 93 94 94 private IEnumerator<ISerializationToken> StorableEnumeration(string name, object value, int? id, int typeId) { 95 private IEnumerator<ISerializationToken> StorableEnumerator(string name, 96 object value, int? id, int typeId) { 95 97 yield return new BeginToken(name, typeId, id); 96 98 int nSubComponents = 0; 97 99 foreach (KeyValuePair<string, DataMemberAccessor> mapping in 98 100 StorableAttribute.GetAutostorableAccessors(value)) { 99 nSubComponents += 1; 101 nSubComponents += 1; 100 102 IEnumerator<ISerializationToken> iterator = Serialize(mapping.Value); 101 103 while (iterator.MoveNext()) { … … 104 106 } 105 107 if (nSubComponents == 0) { 106 throw new ApplicationException(String.Format( 107 "Composite value of type \"{0}\" contains no subcomponents", 108 value.GetType().FullName)); 108 throw new ApplicationException( 109 String.Format( 110 "CustomComposite value of type \"{0}\" contains no subcomponents", 111 value.GetType().FullName)); 109 112 } 110 113 yield return new EndToken(name, typeId, id);
Note: See TracChangeset
for help on using the changeset viewer.