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
- ColorAnimationBase.cs
- SecurityDescriptor.cs
- ByteStreamMessageUtility.cs
- InfoCardRSACryptoProvider.cs
- BamlRecordReader.cs
- LazyTextWriterCreator.cs
- TextStore.cs
- LambdaReference.cs
- ServiceAuthorizationBehavior.cs
- _IPv4Address.cs
- ButtonChrome.cs
- CreateSequence.cs
- HttpAsyncResult.cs
- Action.cs
- RoleGroup.cs
- StrongNameSignatureInformation.cs
- AsyncOperation.cs
- RadioButton.cs
- BamlTreeNode.cs
- ProfilePropertySettings.cs
- StartUpEventArgs.cs
- Rect.cs
- Rijndael.cs
- ReturnEventArgs.cs
- BindingBase.cs
- OperatorExpressions.cs
- Profiler.cs
- ConnectionsZoneAutoFormat.cs
- EastAsianLunisolarCalendar.cs
- SymLanguageVendor.cs
- CalendarDateChangedEventArgs.cs
- MachineKeyConverter.cs
- DuplicateContext.cs
- DbParameterHelper.cs
- TreeView.cs
- DateTimeStorage.cs
- InstancePersistenceCommand.cs
- formatter.cs
- MaterialCollection.cs
- ToolStripProgressBar.cs
- BoundField.cs
- CalendarTable.cs
- DesignBinding.cs
- ExpandableObjectConverter.cs
- XmlObjectSerializerWriteContextComplex.cs
- Boolean.cs
- ResourceAttributes.cs
- WebContext.cs
- DotAtomReader.cs
- SubstitutionResponseElement.cs
- MetadataProperty.cs
- TranslateTransform3D.cs
- M3DUtil.cs
- CrossContextChannel.cs
- SafeArrayRankMismatchException.cs
- AspProxy.cs
- RealProxy.cs
- AttributedMetaModel.cs
- UnauthorizedWebPart.cs
- OdbcError.cs
- XmlBinaryWriterSession.cs
- newinstructionaction.cs
- LinqToSqlWrapper.cs
- AssociationSetEnd.cs
- TypeDescriptionProvider.cs
- AttachedPropertyMethodSelector.cs
- WebHttpSecurityModeHelper.cs
- PageAsyncTask.cs
- AdapterDictionary.cs
- VoiceChangeEventArgs.cs
- httpapplicationstate.cs
- LayoutTable.cs
- ThreadExceptionDialog.cs
- DataRelation.cs
- AccessDataSource.cs
- HwndKeyboardInputProvider.cs
- CroppedBitmap.cs
- EventManager.cs
- DateTimeConverter.cs
- NotificationContext.cs
- SourceSwitch.cs
- Configuration.cs
- ValueConversionAttribute.cs
- LineVisual.cs
- ComplexType.cs
- RootNamespaceAttribute.cs
- Image.cs
- ProcessHostServerConfig.cs
- _SpnDictionary.cs
- ExpressionConverter.cs
- SuppressMergeCheckAttribute.cs
- ChineseLunisolarCalendar.cs
- PublishLicense.cs
- StandardOleMarshalObject.cs
- Underline.cs
- XslTransform.cs
- Int64.cs
- DesignerGenericWebPart.cs
- BroadcastEventHelper.cs
- SecurityDocument.cs