Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / 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
- UnauthorizedAccessException.cs
- XamlFilter.cs
- HttpResponseHeader.cs
- Int32.cs
- AppendHelper.cs
- ReflectTypeDescriptionProvider.cs
- TreeNodeStyle.cs
- WrappedIUnknown.cs
- HttpListenerContext.cs
- DataTemplate.cs
- KeySpline.cs
- XmlILModule.cs
- MethodBody.cs
- AttributeInfo.cs
- BoundsDrawingContextWalker.cs
- ExpressionEditorAttribute.cs
- PrefixQName.cs
- GorillaCodec.cs
- RijndaelManaged.cs
- TargetConverter.cs
- ComponentResourceManager.cs
- DelegateHelpers.cs
- XmlnsDictionary.cs
- UnknownBitmapEncoder.cs
- EntityProxyTypeInfo.cs
- IdentityManager.cs
- SessionState.cs
- X509Certificate2Collection.cs
- FixedPageAutomationPeer.cs
- ToggleButton.cs
- ToolboxItemAttribute.cs
- XmlSigningNodeWriter.cs
- TypeAccessException.cs
- ObjectListTitleAttribute.cs
- SafeNativeMethods.cs
- AsyncWaitHandle.cs
- ResumeStoryboard.cs
- DbConnectionHelper.cs
- BindingExpressionBase.cs
- Calendar.cs
- Journaling.cs
- TemplateControlCodeDomTreeGenerator.cs
- TraceHandler.cs
- MarshalByRefObject.cs
- FontFamilyIdentifier.cs
- ExpressionTextBoxAutomationPeer.cs
- DbParameterHelper.cs
- ControlBindingsCollection.cs
- StatusBarItemAutomationPeer.cs
- DifferencingCollection.cs
- ExecutedRoutedEventArgs.cs
- CounterCreationData.cs
- HiddenField.cs
- HostedTransportConfigurationBase.cs
- DuplicateContext.cs
- InputBinding.cs
- IODescriptionAttribute.cs
- PassportAuthentication.cs
- LoginView.cs
- DataGridViewRowConverter.cs
- MimeTypeAttribute.cs
- PeerObject.cs
- WebRequest.cs
- BehaviorEditorPart.cs
- DbConnectionPoolCounters.cs
- PackageDigitalSignatureManager.cs
- CodeCatchClause.cs
- TypeUsageBuilder.cs
- PieceDirectory.cs
- StringPropertyBuilder.cs
- MethodBuilder.cs
- MatchingStyle.cs
- basemetadatamappingvisitor.cs
- HierarchicalDataTemplate.cs
- ScriptMethodAttribute.cs
- DbUpdateCommandTree.cs
- EnumValidator.cs
- ReflectionHelper.cs
- CodeAttributeDeclaration.cs
- ObjectHandle.cs
- CodeTypeParameterCollection.cs
- PageAdapter.cs
- DefaultTextStore.cs
- SecurityKeyUsage.cs
- EntityCommandExecutionException.cs
- UrlPath.cs
- ConstraintStruct.cs
- DataContractSerializerOperationBehavior.cs
- EdmToObjectNamespaceMap.cs
- DataGridDesigner.cs
- FrameworkTextComposition.cs
- Pkcs7Signer.cs
- WizardSideBarListControlItem.cs
- EventPrivateKey.cs
- TableStyle.cs
- ScaleTransform3D.cs
- Token.cs
- TCPListener.cs
- RadioButtonFlatAdapter.cs
- SoapWriter.cs