public T ReadObject(ReadObjectFlags flags) { List <T> list = this.ReadObjectChunks(flags | ReadObjectFlags.LastChunkOnly); if (list == null || list.Count <= 0) { return(default(T)); } return(list[list.Count - 1]); }
public List <T> ReadObjectChunks(ReadObjectFlags flags) { if ((flags & ReadObjectFlags.Refresh) != ReadObjectFlags.None) { this.message.Dispose(); this.message = null; } if (this.message == null && !this.OpenMessage()) { return(null); } List <T> list = new List <T>(); T t; if ((flags & ReadObjectFlags.LastChunkOnly) == ReadObjectFlags.None) { using (MapiTable attachmentTable = this.message.GetAttachmentTable()) { if (attachmentTable != null) { PropValue[][] array = attachmentTable.QueryAllRows(null, MoveObjectInfo <T> .AttachmentTagsToLoad); foreach (PropValue[] array3 in array) { int @int = array3[0].GetInt(); using (MapiAttach mapiAttach = this.message.OpenAttach(@int)) { using (MapiStream mapiStream = mapiAttach.OpenStream(PropTag.AttachDataBin, OpenPropertyFlags.BestAccess)) { t = MoveObjectInfo <T> .DeserializeFromStream(mapiStream, (flags & ReadObjectFlags.DontThrowOnCorruptData) == ReadObjectFlags.None); } if (t != null) { list.Add(t); } } } } } } t = MoveObjectInfo <T> .ReadObjectFromMessage(this.message, (flags & ReadObjectFlags.DontThrowOnCorruptData) == ReadObjectFlags.None); if (t != null) { list.Add(t); } if (list.Count <= 0) { return(null); } return(list); }
protected override List <ReportEntry> DeserializeEntries(MoveObjectInfo <CompressedReport> moveObjectInfo, bool loadLastChunkOnly) { ReadObjectFlags readObjectFlags = ReadObjectFlags.DontThrowOnCorruptData; if (loadLastChunkOnly) { readObjectFlags |= ReadObjectFlags.LastChunkOnly; } List <CompressedReport> list = moveObjectInfo.ReadObjectChunks(readObjectFlags); if (list == null) { return(null); } List <ReportEntry> list2 = new List <ReportEntry>(); foreach (CompressedReport compressedReport in list) { list2.AddRange(compressedReport.Entries); } return(list2); }