/// <include file='doc\MessageQueuePermission.uex' path='docs/doc[@for="MessageQueuePermission.Intersect"]/*' /> /// <devdoc> /// <para>[To be supplied.]</para> /// </devdoc> public override IPermission Intersect(IPermission target) { if (target == null) { return(null); } if (!(target is MessageQueuePermission)) { throw new ArgumentException(Res.GetString(Res.InvalidParameter, "target", target.ToString())); } MessageQueuePermission targetQueuePermission = (MessageQueuePermission)target; if (this.IsUnrestricted()) { return(targetQueuePermission.Copy()); } if (targetQueuePermission.IsUnrestricted()) { return(this.Copy()); } this.ResolveFormatNames(); targetQueuePermission.ResolveFormatNames(); MessageQueuePermission newPermission = new MessageQueuePermission(); Hashtable newFormatNames = new Hashtable(new CaseInsensitiveHashCodeProvider(CultureInfo.InvariantCulture), new CaseInsensitiveComparer(CultureInfo.InvariantCulture)); newPermission.resolvedFormatNames = newFormatNames; IDictionaryEnumerator formatNamesEnumerator; Hashtable formatNamesTable; if (this.resolvedFormatNames.Count < targetQueuePermission.resolvedFormatNames.Count) { formatNamesEnumerator = this.resolvedFormatNames.GetEnumerator(); formatNamesTable = targetQueuePermission.resolvedFormatNames; } else { formatNamesEnumerator = targetQueuePermission.resolvedFormatNames.GetEnumerator(); formatNamesTable = this.resolvedFormatNames; } while (formatNamesEnumerator.MoveNext()) { if (formatNamesTable.ContainsKey(formatNamesEnumerator.Key)) { string currentFormatName = (string)formatNamesEnumerator.Key; MessageQueuePermissionAccess currentAccess = (MessageQueuePermissionAccess)formatNamesEnumerator.Value; MessageQueuePermissionAccess targetAccess = (MessageQueuePermissionAccess)formatNamesTable[currentFormatName]; newFormatNames.Add(currentFormatName, currentAccess & targetAccess); } } return(newPermission); }
public override IPermission Intersect(IPermission target) { IDictionaryEnumerator enumerator; Hashtable resolvedFormatNames; if (target == null) { return(null); } if (!(target is MessageQueuePermission)) { throw new ArgumentException(Res.GetString("InvalidParameter", new object[] { "target", target.ToString() })); } MessageQueuePermission permission = (MessageQueuePermission)target; if (this.IsUnrestricted()) { return(permission.Copy()); } if (permission.IsUnrestricted()) { return(this.Copy()); } this.ResolveFormatNames(); permission.ResolveFormatNames(); MessageQueuePermission permission2 = new MessageQueuePermission(); Hashtable hashtable = new Hashtable(GetComparer()); permission2.resolvedFormatNames = hashtable; if (this.resolvedFormatNames.Count < permission.resolvedFormatNames.Count) { enumerator = this.resolvedFormatNames.GetEnumerator(); resolvedFormatNames = permission.resolvedFormatNames; } else { enumerator = permission.resolvedFormatNames.GetEnumerator(); resolvedFormatNames = this.resolvedFormatNames; } while (enumerator.MoveNext()) { if (resolvedFormatNames.ContainsKey(enumerator.Key)) { string key = (string)enumerator.Key; MessageQueuePermissionAccess access = (MessageQueuePermissionAccess)enumerator.Value; MessageQueuePermissionAccess access2 = (MessageQueuePermissionAccess)resolvedFormatNames[key]; hashtable.Add(key, access & access2); } } return(permission2); }