/// <summary>Creates and returns a permission that is the intersection of the current permission and the specified permission.</summary> /// <returns>A new permission object that represents the intersection of the current permission and the specified permission. This new permission is null if the intersection is empty.</returns> /// <param name="target">A permission to intersect with the current permission. It must be of the same type as the current permission. </param> /// <exception cref="T:System.ArgumentException">The <paramref name="target" /> parameter is not null and is not of the same type as the current permission. </exception> public override IPermission Intersect(IPermission target) { SecurityPermission securityPermission = this.Cast(target); if (securityPermission == null) { return(null); } if (this.IsEmpty() || securityPermission.IsEmpty()) { return(null); } if (this.IsUnrestricted() && securityPermission.IsUnrestricted()) { return(new SecurityPermission(PermissionState.Unrestricted)); } if (this.IsUnrestricted()) { return(securityPermission.Copy()); } if (securityPermission.IsUnrestricted()) { return(this.Copy()); } SecurityPermissionFlag securityPermissionFlag = this.flags & securityPermission.flags; if (securityPermissionFlag == SecurityPermissionFlag.NoFlags) { return(null); } return(new SecurityPermission(securityPermissionFlag)); }
public override IPermission Intersect(IPermission target) { SecurityPermission sp = Cast(target); if (sp == null) { return(null); } if (IsEmpty() || sp.IsEmpty()) { return(null); } if (this.IsUnrestricted() && sp.IsUnrestricted()) { return(new SecurityPermission(PermissionState.Unrestricted)); } if (this.IsUnrestricted()) { return(sp.Copy()); } if (sp.IsUnrestricted()) { return(this.Copy()); } SecurityPermissionFlag f = flags & sp.flags; if (f == SecurityPermissionFlag.NoFlags) { return(null); } else { return(new SecurityPermission(f)); } }
public void Copy () { SecurityPermission sp = new SecurityPermission (PermissionState.None); foreach (SecurityPermissionFlag spf in AllFlags) { sp.Flags = spf; SecurityPermission copy = (SecurityPermission) sp.Copy (); Assert.AreEqual (spf, copy.Flags, spf.ToString ()); } }
public void PermissionState_Unrestricted () { PermissionState ps = PermissionState.Unrestricted; SecurityPermission sp = new SecurityPermission (ps); Assert.AreEqual (SecurityPermissionFlag.AllFlags, sp.Flags, "Flags"); Assert.IsTrue (sp.IsUnrestricted (), "IsUnrestricted"); SecurityElement se = sp.ToXml (); // only class and version are present Assert.AreEqual ("true", se.Attribute ("Unrestricted"), "Xml-Unrestricted"); Assert.IsNull (se.Children, "Xml-Children"); SecurityPermission copy = (SecurityPermission)sp.Copy (); Assert.IsFalse (Object.ReferenceEquals (sp, copy), "ReferenceEquals"); Assert.AreEqual (sp.Flags, copy.Flags, "Flags"); Assert.AreEqual (sp.IsUnrestricted (), copy.IsUnrestricted (), "IsUnrestricted ()"); }