예제 #1
0
        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);
        }
예제 #2
0
        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);
        }