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
- IPEndPointCollection.cs
- ReadOnlyDictionary.cs
- WebRequestModuleElementCollection.cs
- SQLRoleProvider.cs
- Util.cs
- ToolStripItem.cs
- Errors.cs
- BlockCollection.cs
- MethodRental.cs
- SqlDependency.cs
- Token.cs
- PipelineModuleStepContainer.cs
- CodeMethodReturnStatement.cs
- KeyPressEvent.cs
- SimpleTextLine.cs
- TreeViewCancelEvent.cs
- Axis.cs
- ProfileInfo.cs
- InstanceDescriptor.cs
- SendMailErrorEventArgs.cs
- Rotation3DAnimationBase.cs
- InputBinder.cs
- EntityDataSourceChangedEventArgs.cs
- Point.cs
- XmlRawWriterWrapper.cs
- ImageListStreamer.cs
- MtomMessageEncoder.cs
- Operator.cs
- XPathMultyIterator.cs
- DictionaryTraceRecord.cs
- FontDialog.cs
- SQLString.cs
- StateMachineTimers.cs
- BindUriHelper.cs
- WeakReferenceList.cs
- FixedPageStructure.cs
- HttpRuntime.cs
- FlowchartStart.xaml.cs
- SecureEnvironment.cs
- TreeViewItem.cs
- TaskbarItemInfo.cs
- TdsRecordBufferSetter.cs
- XNodeValidator.cs
- ArrayElementGridEntry.cs
- ToolBar.cs
- ToolStripGripRenderEventArgs.cs
- BuildProvider.cs
- Wildcard.cs
- ImageAttributes.cs
- MonthCalendar.cs
- DesignerDataSourceView.cs
- PageCache.cs
- OverflowException.cs
- TextPointer.cs
- DataSvcMapFileSerializer.cs
- Pair.cs
- RubberbandSelector.cs
- OleDbFactory.cs
- ObjectStateEntryBaseUpdatableDataRecord.cs
- MessagePartDescriptionCollection.cs
- InvariantComparer.cs
- AnimationClock.cs
- MimeMapping.cs
- StrokeNodeEnumerator.cs
- DataObjectPastingEventArgs.cs
- PolyLineSegment.cs
- VirtualDirectoryMappingCollection.cs
- EntityDataSourceWizardForm.cs
- LogLogRecordEnumerator.cs
- NetworkInformationException.cs
- CqlQuery.cs
- VSWCFServiceContractGenerator.cs
- CompilerResults.cs
- PageAsyncTask.cs
- WindowClosedEventArgs.cs
- FixedFlowMap.cs
- IRCollection.cs
- FigureHelper.cs
- GZipDecoder.cs
- XmlSchemaProviderAttribute.cs
- PositiveTimeSpanValidator.cs
- DivideByZeroException.cs
- PinnedBufferMemoryStream.cs
- _TimerThread.cs
- RowToFieldTransformer.cs
- Debug.cs
- MatrixIndependentAnimationStorage.cs
- RequestCachingSection.cs
- RegexRunnerFactory.cs
- ArrayConverter.cs
- versioninfo.cs
- StrongNamePublicKeyBlob.cs
- HttpPostLocalhostServerProtocol.cs
- ScriptControl.cs
- Oci.cs
- EncryptedHeaderXml.cs
- CompilerWrapper.cs
- EmptyControlCollection.cs
- DataSourceXmlSerializationAttribute.cs
- ProfilePropertySettingsCollection.cs