System.Security.Permissions.ResourcePermissionBase.RemovePermissionAccess C# (CSharp) Method

RemovePermissionAccess() protected method

protected RemovePermissionAccess ( ResourcePermissionBaseEntry entry ) : void
entry ResourcePermissionBaseEntry
return void
        protected void RemovePermissionAccess(ResourcePermissionBaseEntry entry) {
            if (entry == null)
                throw new ArgumentNullException("entry");

            if (entry.PermissionAccessPath.Length != this.TagNames.Length)
                throw new InvalidOperationException(SR.GetString(SR.PermissionNumberOfElements));

            Hashtable currentTable = this.rootTable;
            string[] accessPath = entry.PermissionAccessPath;
            for (int index = 0; index < accessPath.Length; ++ index) {
                if (currentTable == null || !currentTable.ContainsKey(accessPath[index]))
                    throw new InvalidOperationException(SR.GetString(SR.PermissionItemDoesntExist));
                else {
                    Hashtable oldTable = currentTable;
                    if (index < accessPath.Length - 1) {
                        currentTable = (Hashtable)currentTable[accessPath[index]];
                        if (currentTable.Count == 1)
                            oldTable.Remove(accessPath[index]);
                    }
                    else {
                        currentTable = null;
                        oldTable.Remove(accessPath[index]);
                    }
                }
            }
        }