Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Shared / MS / Internal / Permissions / InternalPermissions.cs / 1305600 / 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. // // From MSDN: // // When you inherit from CodeAccessPermission, you must also implement the IUnrestrictedPermission interface. // The following CodeAccessPermission members must be overridden: Copy, Intersect, IsSubsetOf, ToXml, FromXml, and Union. // You must also define a constructor that takes a PermissionState as its only parameter. // You must apply the SerializableAttribute attribute to a class that inherits from CodeAccessPermission. // // InternalParameterlessPermissionBase is a base class that requires derived classes to only support one // PermissionState (Unrestricted) and to have no parameters/properties/state. As above, derived classes must also be // [Serializable] and have a public constructor that takes PermissionState. // // History: // 02/28/05 : marka - Created //--------------------------------------------------------------------------- using System; using System.Diagnostics; 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 overridable methods on CodeAccessPermission // [FriendAccessAllowed] [Serializable] internal abstract class InternalParameterlessPermissionBase : CodeAccessPermission, IUnrestrictedPermission { //----------------------------------------------------- // // Constructors // //----------------------------------------------------- #region Constructor protected InternalParameterlessPermissionBase(PermissionState state) { Debug.Assert(GetType().IsSerializable); switch (state) { case PermissionState.Unrestricted: break; case PermissionState.None: default: throw new ArgumentException(SR.Get(SRID.InvalidPermissionStateValue, state), "state"); } } #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), "target"); } // 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), "target"); } // there is no state. If you are the same type as me - you are a subset of me. return true; } public override IPermission Union(IPermission target) { if(null == target) { return null; } if ( target.GetType() != this.GetType() ) { throw new ArgumentException( SR.Get(SRID.InvalidPermissionType, this.GetType().FullName), "target"); } // there is no state. The union of 2 permissions of the same type is the same permission. return this.Copy(); } #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. // // From MSDN: // // When you inherit from CodeAccessPermission, you must also implement the IUnrestrictedPermission interface. // The following CodeAccessPermission members must be overridden: Copy, Intersect, IsSubsetOf, ToXml, FromXml, and Union. // You must also define a constructor that takes a PermissionState as its only parameter. // You must apply the SerializableAttribute attribute to a class that inherits from CodeAccessPermission. // // InternalParameterlessPermissionBase is a base class that requires derived classes to only support one // PermissionState (Unrestricted) and to have no parameters/properties/state. As above, derived classes must also be // [Serializable] and have a public constructor that takes PermissionState. // // History: // 02/28/05 : marka - Created //--------------------------------------------------------------------------- using System; using System.Diagnostics; 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 overridable methods on CodeAccessPermission // [FriendAccessAllowed] [Serializable] internal abstract class InternalParameterlessPermissionBase : CodeAccessPermission, IUnrestrictedPermission { //----------------------------------------------------- // // Constructors // //----------------------------------------------------- #region Constructor protected InternalParameterlessPermissionBase(PermissionState state) { Debug.Assert(GetType().IsSerializable); switch (state) { case PermissionState.Unrestricted: break; case PermissionState.None: default: throw new ArgumentException(SR.Get(SRID.InvalidPermissionStateValue, state), "state"); } } #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), "target"); } // 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), "target"); } // there is no state. If you are the same type as me - you are a subset of me. return true; } public override IPermission Union(IPermission target) { if(null == target) { return null; } if ( target.GetType() != this.GetType() ) { throw new ArgumentException( SR.Get(SRID.InvalidPermissionType, this.GetType().FullName), "target"); } // there is no state. The union of 2 permissions of the same type is the same permission. return this.Copy(); } #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
- Component.cs
- WebPartCatalogCloseVerb.cs
- GenericRootAutomationPeer.cs
- SynchronizationValidator.cs
- RecognizerBase.cs
- CssTextWriter.cs
- ParameterCollection.cs
- ToolStripDropDownClosedEventArgs.cs
- WebPartTransformerAttribute.cs
- ActivationServices.cs
- TypeReference.cs
- DbException.cs
- securitycriticaldataformultiplegetandset.cs
- GraphicsPathIterator.cs
- AutoResizedEvent.cs
- TrimSurroundingWhitespaceAttribute.cs
- EncryptedReference.cs
- ExpanderAutomationPeer.cs
- ToolStripSeparator.cs
- SystemDiagnosticsSection.cs
- PixelShader.cs
- _Events.cs
- TemplateAction.cs
- IsolatedStorageFilePermission.cs
- DataGridItemAttachedStorage.cs
- BitmapFrame.cs
- SqlEnums.cs
- MetadataImporter.cs
- HostVisual.cs
- WebBrowserNavigatingEventHandler.cs
- MonthChangedEventArgs.cs
- BufferBuilder.cs
- BooleanAnimationUsingKeyFrames.cs
- TextProperties.cs
- Vector3DConverter.cs
- RuleSettings.cs
- CrossContextChannel.cs
- DbConnectionPoolIdentity.cs
- DataErrorValidationRule.cs
- BuildProviderAppliesToAttribute.cs
- XmlSchemaComplexType.cs
- Debug.cs
- SmtpException.cs
- WebPartTransformerCollection.cs
- LabelDesigner.cs
- DbgCompiler.cs
- SafeCryptoKeyHandle.cs
- DocumentViewerAutomationPeer.cs
- TextViewBase.cs
- RepeatButton.cs
- StringResourceManager.cs
- ActiveXSite.cs
- ListViewGroupConverter.cs
- MultipleViewPattern.cs
- HelpKeywordAttribute.cs
- TraceRecord.cs
- QilNode.cs
- StringConverter.cs
- PauseStoryboard.cs
- InstanceContextMode.cs
- PersonalizationEntry.cs
- XmlSignatureProperties.cs
- PkcsMisc.cs
- ResolvedKeyFrameEntry.cs
- TextParaClient.cs
- PolyLineSegment.cs
- HttpHandlerActionCollection.cs
- FacetChecker.cs
- XPathSingletonIterator.cs
- EFColumnProvider.cs
- ServiceBusyException.cs
- ClonableStack.cs
- WebPartConnectionsCloseVerb.cs
- Transform.cs
- DataGridViewMethods.cs
- GeometryGroup.cs
- MonikerSyntaxException.cs
- ProcessRequestArgs.cs
- Lasso.cs
- ReferenceService.cs
- MouseActionValueSerializer.cs
- TextRangeSerialization.cs
- WmlCommandAdapter.cs
- RegexCode.cs
- ApplicationHost.cs
- shaper.cs
- ReachPrintTicketSerializer.cs
- StickyNoteHelper.cs
- _AutoWebProxyScriptHelper.cs
- backend.cs
- ServiceMemoryGates.cs
- Listbox.cs
- DBConcurrencyException.cs
- PointValueSerializer.cs
- BindingUtils.cs
- MimeBasePart.cs
- WindowsStatusBar.cs
- SpecularMaterial.cs
- ProfileService.cs
- Identity.cs