IPermissionECMA 1.0

System.Security (mscorlib.dll)interface
public interface IPermission : ISecurityEncodable {
// Public Instance Methods
   public IPermission Copy(  );
   public void Demand(  );
   public IPermission Intersect(IPermission target);
   public bool IsSubsetOf(IPermission target);
   public IPermission Union(IPermission target);

This IPermission interface defines the minimum set of methods that all permission classes must implement if they are to integrate with the code-access security framework of the .NET runtime.

IPermission defines the Demand( ) method, which is the most fundamental mechanism used to enforce code-access security. Demand( ) invokes a security demand for the implementing permission object. This ensures that calling code has the permission; otherwise, a SecurityException is thrown. All of the standard code-access and identity permissions implement the IStackWalk interface, which also defines a Demand( ) method. The IStackWalk.Demand( ) method initiates a stack-walk-based security demand, whereas IPermission.Demand( ) is intended for use by permission classes that do not use stack walksfor example, the System.Security.Permissions.PrincipalPermission class.

The exact behavior of the Copy( ), Intersect( ), IsSubsetOf( ), and Union( ) methods vary based on the nature of the implementing permission class. Copy( ) returns a deep copy of the permission. Intersect( ) returns a new permission that represents the logical intersection of the current and a specified IPermission, whereas Union( ) returns the logical union of the two IPermission objects. IsSubsetOf( ) indicates whether the current IPermission represents a subset of the specified IPermission.

Implemented By

CodeAccessPermission, System.Security.Permissions.PrincipalPermission

Returned By

Multiple types

Passed To

CodeAccessPermission.{Intersect( ), IsSubsetOf( ), Union( )}, System.Security.Permissions.PrincipalPermission.{Intersect( ), IsSubsetOf( ), Union( )}, PermissionSet.{AddPermission( ), SetPermission( )}, SecurityManager.IsGranted( )

    Part V: API Quick Reference