private static MapiFolder RetrieveParentMapiFolder(MapiStore store, FolderId identity, ref MapiFolder folder) { if (store == null) { throw new ArgumentNullException("store"); } Folder.CheckRequirementsOnIdentityToContinue(identity); MapiFolder mapiFolder = null; bool flag = false; bool flag2 = false; MapiFolder result; try { byte[] array = null; if (null == identity.MapiEntryId) { if (identity.LegacyDistinguishedName != null) { array = store.GetFolderEntryId(identity.LegacyDistinguishedName); } } else { array = (byte[])identity.MapiEntryId; } if (array != null) { if (folder == null) { folder = (MapiFolder)store.OpenEntry(array); flag = true; } mapiFolder = (MapiFolder)store.OpenEntry(folder.GetProp(PropTag.ParentEntryId).GetBytes()); } else if (null != identity.MapiFolderPath) { MapiFolderPath parent = identity.MapiFolderPath.Parent; if (null == parent) { mapiFolder = store.GetRootFolder(); } else { mapiFolder = Folder.GetFolderByPath(store, parent); } } flag2 = true; result = mapiFolder; } finally { if (!flag2) { if (flag && folder != null) { folder.Dispose(); folder = null; } if (mapiFolder != null) { mapiFolder.Dispose(); mapiFolder = null; } } } return(result); }
internal static MapiFolder RetrieveMapiFolder(MapiStore store, FolderId identity, ref MapiFolder parent, Folder.IdentityConstructor idCtor, out FolderId realId) { realId = null; if (store == null) { throw new ArgumentNullException("store"); } Folder.CheckRequirementsOnIdentityToContinue(identity); MapiFolder mapiFolder = null; bool flag = false; bool flag2 = false; MapiFolder result; try { byte[] array = null; MapiEntryId entryId = null; MapiFolderPath folderPath = null; string legacyDn = null; if (null == identity.MapiEntryId) { if (identity.LegacyDistinguishedName != null) { legacyDn = identity.LegacyDistinguishedName; array = store.GetFolderEntryId(identity.LegacyDistinguishedName); } } else { array = (byte[])identity.MapiEntryId; } if (array != null) { entryId = new MapiEntryId(array); mapiFolder = (MapiFolder)store.OpenEntry(array); if (parent == null) { parent = (MapiFolder)store.OpenEntry(mapiFolder.GetProp(PropTag.ParentEntryId).GetBytes()); flag = true; } } else if (null != identity.MapiFolderPath) { folderPath = identity.MapiFolderPath; if (parent == null) { mapiFolder = Folder.GetFolderByPath(store, identity.MapiFolderPath, out parent); flag = true; } else { mapiFolder = Folder.GetFolderByPath(store, parent, identity.MapiFolderPath); } } if (idCtor != null) { realId = idCtor(entryId, folderPath, legacyDn); } flag2 = true; result = mapiFolder; } finally { if (!flag2) { if (mapiFolder != null) { mapiFolder.Dispose(); mapiFolder = null; } if (flag && parent != null) { parent.Dispose(); parent = null; } } } return(result); }