/// <summary>Creates a permission that is the union of the current permission and the specified permission.</summary> /// <returns>A new permission that represents the union of the current permission and the specified permission.</returns> /// <param name="target">A permission to combine with the current permission. It must be of the same type as the current permission. </param> /// <exception cref="T:System.ArgumentException"> /// <paramref name="target" /> is not null and does not specify a permission of the same type as the current permission. </exception> public override IPermission Union(IPermission target) { KeyContainerPermission keyContainerPermission = this.Cast(target); if (keyContainerPermission == null) { return(this.Copy()); } KeyContainerPermissionAccessEntryCollection keyContainerPermissionAccessEntryCollection = new KeyContainerPermissionAccessEntryCollection(); foreach (KeyContainerPermissionAccessEntry accessEntry in this._accessEntries) { keyContainerPermissionAccessEntryCollection.Add(accessEntry); } foreach (KeyContainerPermissionAccessEntry accessEntry2 in keyContainerPermission._accessEntries) { if (this._accessEntries.IndexOf(accessEntry2) == -1) { keyContainerPermissionAccessEntryCollection.Add(accessEntry2); } } if (keyContainerPermissionAccessEntryCollection.Count == 0) { return(new KeyContainerPermission(this._flags | keyContainerPermission._flags)); } KeyContainerPermissionAccessEntry[] array = new KeyContainerPermissionAccessEntry[keyContainerPermissionAccessEntryCollection.Count]; keyContainerPermissionAccessEntryCollection.CopyTo(array, 0); return(new KeyContainerPermission(this._flags | keyContainerPermission._flags, array)); }
public override IPermission Union(IPermission target) { KeyContainerPermission kcp = Cast(target); if (kcp == null) { return(Copy()); } KeyContainerPermissionAccessEntryCollection kcpaec = new KeyContainerPermissionAccessEntryCollection(); // copy first group foreach (KeyContainerPermissionAccessEntry kcpae in _accessEntries) { kcpaec.Add(kcpae); } // copy second group... foreach (KeyContainerPermissionAccessEntry kcpae in kcp._accessEntries) { // ... but only if not present in first group if (_accessEntries.IndexOf(kcpae) == -1) { kcpaec.Add(kcpae); } } if (kcpaec.Count == 0) { return(new KeyContainerPermission((_flags | kcp._flags))); } KeyContainerPermissionAccessEntry[] list = new KeyContainerPermissionAccessEntry [kcpaec.Count]; kcpaec.CopyTo(list, 0); return(new KeyContainerPermission((_flags | kcp._flags), list)); }
public KeyContainerPermission (KeyContainerPermissionFlags flags, KeyContainerPermissionAccessEntry[] accessList) { SetFlags (flags); if (accessList != null) { _accessEntries = new KeyContainerPermissionAccessEntryCollection (); foreach (KeyContainerPermissionAccessEntry kcpae in accessList) { _accessEntries.Add (kcpae); } } }
public KeyContainerPermission(KeyContainerPermissionFlags flags, KeyContainerPermissionAccessEntry[] accessList) { SetFlags(flags); if (accessList != null) { foreach (KeyContainerPermissionAccessEntry kcpae in accessList) { _accessEntries.Add(kcpae); } } }
public KeyContainerPermission (KeyContainerPermissionFlags flags, KeyContainerPermissionAccessEntry[] accessList) { if (accessList == null) throw new ArgumentNullException("accessList"); Contract.EndContractBlock(); VerifyFlags(flags); m_flags = flags; m_accessEntries = new KeyContainerPermissionAccessEntryCollection(m_flags); for (int index = 0; index < accessList.Length; index++) { m_accessEntries.Add(accessList[index]); } }
public override IPermission Union (IPermission target) { KeyContainerPermission kcp = Cast (target); if (kcp == null) return Copy (); KeyContainerPermissionAccessEntryCollection kcpaec = new KeyContainerPermissionAccessEntryCollection (); // copy first group foreach (KeyContainerPermissionAccessEntry kcpae in _accessEntries) { kcpaec.Add (kcpae); } // copy second group... foreach (KeyContainerPermissionAccessEntry kcpae in kcp._accessEntries) { // ... but only if not present in first group if (_accessEntries.IndexOf (kcpae) == -1) kcpaec.Add (kcpae); } if (kcpaec.Count == 0) return new KeyContainerPermission ((_flags | kcp._flags)); KeyContainerPermissionAccessEntry[] list = new KeyContainerPermissionAccessEntry [kcpaec.Count]; kcpaec.CopyTo (list, 0); return new KeyContainerPermission ((_flags | kcp._flags), list); }