Copy() public method

public Copy ( ) : IPermission
return IPermission
Beispiel #1
0
        /// <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));
        }
Beispiel #2
0
        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 ()");
		}