InternalPermissions.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Shared / MS / Internal / Permissions / InternalPermissions.cs / 1 / InternalPermissions.cs

                            //---------------------------------------------------------------------------- 
//
// 
//    Copyright (C) Microsoft Corporation.  All rights reserved.
//  
//
// 
// Description: Internal Permissions. 
//                  These are classes for permissions that will be asserted/demanded internally.
//                  But will be granted in full-trust. 
//                  Only internal avalon code will assert these permissions.
//
//              Using them allows the following:
//                  We can have very specific targeted asserts. So for example instead of 
//                  a blanket assert for Unmanaged code instead we can have very granular permissiosn.
// 
//                  They are still available by default in full-trust. 
//
//                  Currently the only way to detect User-Initiated actions is for commands. 
//                  So by associating a custom permisison with a command we can very tightly scope
//                  the set of operations allowed.
//
// History: 
//  02/28/05 : [....] - Created
//--------------------------------------------------------------------------- 
 
using System;
using System.Text; 
using System.Security;
using System.Security.Permissions;
using System.Windows;
 
#if WINDOWS_BASE
using MS.Internal.WindowsBase; 
#endif 

namespace MS.Internal.Permissions 
{
    //
    // derive all InternalPermissions from this.
    // Provides default implementations of several abstract methods on CodeAccessPermission 
    //
    [FriendAccessAllowed] 
    internal abstract class InternalPermissionBase : CodeAccessPermission, IUnrestrictedPermission 
    {
       //----------------------------------------------------- 
       //
       //  Constructors
       //
       //----------------------------------------------------- 
        #region Constructor
 
        public InternalPermissionBase( ) 
        {
 
        }

        #endregion Constructor
 
       //------------------------------------------------------
       // 
       //  Interface Methods 
       //
       //----------------------------------------------------- 
        #region Interface Methods

        public bool IsUnrestricted()
        { 
            return true;
        } 
 
        #endregion Interface Methods
 
       //------------------------------------------------------
       //
       //  Public Methods
       // 
       //------------------------------------------------------
 
        #region Public Methods 

        public override SecurityElement ToXml() 
        {
           SecurityElement element = new SecurityElement("IPermission");
           Type type = this.GetType();
           StringBuilder AssemblyName = new StringBuilder(type.Assembly.ToString()); 
           AssemblyName.Replace('\"', '\'');
           element.AddAttribute("class", type.FullName + ", " + AssemblyName); 
           element.AddAttribute("version", "1"); 
           return element;
        } 

        public override void FromXml( SecurityElement elem)
        {
            // from XML is easy - there is no state. 
        }
 
        public override IPermission Intersect(IPermission target) 
        {
            if(null == target) 
            {
                return null;
            }
 
            if ( target.GetType() != this.GetType() )
            { 
                throw new ArgumentException( SR.Get(SRID.InvalidPermissionType), this.GetType().FullName); 
            }
 
            // there is no state. The intersection of 2 permissions of the same type is the same permission.
            return this.Copy();
        }
 
        public override bool IsSubsetOf(IPermission target)
        { 
            if(null == target) 
            {
                return false; 
            }

            if ( target.GetType() != this.GetType() )
            { 
                throw new ArgumentException( SR.Get(SRID.InvalidPermissionType), this.GetType().FullName);
            } 
 
            // there is no state. If you are the same type as me - you are a subset of me.
            return true; 
        }

        #endregion Public Methods
    } 
}
 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.


                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK