/// <summary> /// Captures the future data. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="header">The header.</param> /// <param name="instance">The instance.</param> public void CaptureFutureData <T>(BarfObjectHeader header, ref T instance) where T : ISerializationInfo { if (header.EndPosition < Reader.BaseStream.Position) { RaiseInvalidData <T>(header, "Can't capture future data when the current position is past the current position."); } var remainingLength = header.EndPosition - Reader.BaseStream.Position; var futureData = new byte[remainingLength]; Reader.BaseStream.Read(futureData, 0, futureData.Length); var typeInfo = BarfSerializationTypeInfo.Create(header, futureData); var info = (BarfSerializationInfo)instance.SerializationInfo ?? new BarfSerializationInfo(); info.Add(typeof(T), typeInfo); instance.SerializationInfo = info; }
public void Add(Type type, BarfSerializationTypeInfo info) { _perTypeInfo.Add(type, info); }
public bool TryGet(Type type, out BarfSerializationTypeInfo info) { return(_perTypeInfo.TryGetValue(type, out info)); }