- Timestamp:
- 03/11/10 15:50:50 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Persistence/3.3/Core/Serializer.cs
r3004 r3005 49 49 private readonly bool isTestRun; 50 50 private readonly List<Exception> exceptions; 51 52 public bool InterleaveTypeInformation { get; set; } 51 53 52 54 /// <summary> … … 106 108 /// don't stop at the first exception</param> 107 109 public Serializer(object obj, Configuration configuration, string rootName, bool isTestRun) { 110 this.InterleaveTypeInformation = false; 108 111 this.obj = obj; 109 112 this.rootName = rootName; … … 144 147 if (obj2id.ContainsKey(value)) 145 148 return ReferenceEnumerator(accessor.Name, obj2id[value]); 146 if (!typeCache.ContainsKey(type)) 149 bool emitTypeInfo = false; 150 if (!typeCache.ContainsKey(type)) { 147 151 typeCache.Add(type, typeCache.Count); 152 emitTypeInfo = InterleaveTypeInformation; 153 } 148 154 int typeId = typeCache[type]; 149 155 int? id = null; … … 155 161 IPrimitiveSerializer primitiveSerializer = configuration.GetPrimitiveSerializer(type); 156 162 if (primitiveSerializer != null) 157 return PrimitiveEnumerator(accessor.Name, typeId, primitiveSerializer.Format(value), id); 163 return PrimitiveEnumerator( 164 accessor.Name, 165 typeId, 166 primitiveSerializer.Format(value), 167 id, 168 emitTypeInfo); 158 169 ICompositeSerializer compositeSerializer = configuration.GetCompositeSerializer(type); 159 170 if (compositeSerializer != null) 160 return CompositeEnumerator(accessor.Name, compositeSerializer.Decompose(value), id, typeId, compositeSerializer.CreateMetaInfo(value)); 171 return CompositeEnumerator( 172 accessor.Name, 173 compositeSerializer.Decompose(value), 174 id, 175 typeId, 176 compositeSerializer.CreateMetaInfo(value), 177 emitTypeInfo); 161 178 throw CreatePersistenceException(type); 162 179 } catch (Exception x) { … … 200 217 201 218 private IEnumerator<ISerializationToken> PrimitiveEnumerator(string name, 202 int typeId, ISerialData serializedValue, int? id) { 219 int typeId, ISerialData serializedValue, int? id, bool emitTypeInfo) { 220 if (emitTypeInfo) { 221 var mapping = TypeCache[typeId]; 222 yield return new TypeToken(mapping.Id, mapping.TypeName, mapping.Serializer); 223 } 203 224 yield return new PrimitiveToken(name, typeId, id, serializedValue); 204 225 } 205 226 206 227 private IEnumerator<ISerializationToken> CompositeEnumerator( 207 string name, IEnumerable<Tag> tags, int? id, int typeId, IEnumerable<Tag> metaInfo) { 228 string name, IEnumerable<Tag> tags, int? id, int typeId, IEnumerable<Tag> metaInfo, 229 bool emitTypeInfo) { 230 if (emitTypeInfo) { 231 var mapping = TypeCache[typeId]; 232 yield return new TypeToken(mapping.Id, mapping.TypeName, mapping.Serializer); 233 } 208 234 yield return new BeginToken(name, typeId, id); 209 235 bool first = true;
Note: See TracChangeset
for help on using the changeset viewer.