Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / wpf / src / 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 : marka - 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. //---------------------------------------------------------------------------- // //// 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 : marka - 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
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ActivityAction.cs
- DataFormat.cs
- HtmlInputImage.cs
- WebBrowser.cs
- StrongNameKeyPair.cs
- FormatterConverter.cs
- BrowserTree.cs
- Console.cs
- Deflater.cs
- StorageScalarPropertyMapping.cs
- TreeNodeCollection.cs
- ObjectPersistData.cs
- SlipBehavior.cs
- ISFTagAndGuidCache.cs
- SymDocumentType.cs
- ZoneMembershipCondition.cs
- EnumCodeDomSerializer.cs
- X509SecurityTokenParameters.cs
- EdmComplexPropertyAttribute.cs
- ObjectDataSource.cs
- SQLChars.cs
- AssemblyGen.cs
- OutOfMemoryException.cs
- Source.cs
- RectangleF.cs
- AxisAngleRotation3D.cs
- TextMarkerSource.cs
- GestureRecognitionResult.cs
- DropDownButton.cs
- ClientBase.cs
- embossbitmapeffect.cs
- PersonalizationStateQuery.cs
- errorpatternmatcher.cs
- ApplicationBuildProvider.cs
- TextStore.cs
- ClipboardData.cs
- HtmlControlAdapter.cs
- SspiHelper.cs
- WebRequestModuleElement.cs
- CustomErrorsSection.cs
- PrintEvent.cs
- ConfigXmlComment.cs
- ServiceReference.cs
- ProtocolsSection.cs
- ListItem.cs
- ValueChangedEventManager.cs
- Control.cs
- HttpCachePolicy.cs
- PeerCollaborationPermission.cs
- RijndaelCryptoServiceProvider.cs
- TypeDelegator.cs
- ErrorFormatterPage.cs
- Knowncolors.cs
- FileEnumerator.cs
- LayoutInformation.cs
- GridEntry.cs
- AstNode.cs
- WorkflowPersistenceContext.cs
- TableMethodGenerator.cs
- RuntimeHandles.cs
- StorageModelBuildProvider.cs
- ChtmlTextWriter.cs
- ConnectionManagementSection.cs
- IconEditor.cs
- DataServiceSaveChangesEventArgs.cs
- _ProxyRegBlob.cs
- AlgoModule.cs
- TickBar.cs
- CodeAccessPermission.cs
- GradientStop.cs
- SimpleParser.cs
- ScrollViewer.cs
- SecurityResources.cs
- LicenseManager.cs
- Crc32.cs
- ControlCachePolicy.cs
- Win32Native.cs
- ContractMapping.cs
- OdbcConnectionFactory.cs
- DataListCommandEventArgs.cs
- PasswordBox.cs
- AmbientLight.cs
- BinaryVersion.cs
- DataGridViewSelectedRowCollection.cs
- Debug.cs
- CodeIterationStatement.cs
- AnnotationAdorner.cs
- DbConnectionPoolGroupProviderInfo.cs
- XmlTextEncoder.cs
- RunInstallerAttribute.cs
- EventMap.cs
- Update.cs
- SchemaImporterExtensionElement.cs
- ServicePointManager.cs
- ADRole.cs
- AlternationConverter.cs
- SchemaContext.cs
- HandlerMappingMemo.cs
- InvokeMethodActivity.cs
- SqlClientWrapperSmiStream.cs