Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / 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
- BindStream.cs
- ComponentFactoryHelpers.cs
- EnumerableRowCollectionExtensions.cs
- DatatypeImplementation.cs
- BuildResult.cs
- SnapLine.cs
- PathSegmentCollection.cs
- DataControlImageButton.cs
- GridItemPatternIdentifiers.cs
- Column.cs
- XsdDateTime.cs
- RtfToXamlReader.cs
- SecurityTokenValidationException.cs
- ServerIdentity.cs
- SyndicationDeserializer.cs
- BamlVersionHeader.cs
- TreeNodeStyleCollection.cs
- DbTransaction.cs
- EntityDataSourceView.cs
- DateTimeConverter.cs
- Visual.cs
- OneWayElement.cs
- FormViewRow.cs
- ConfigErrorGlyph.cs
- FlowDocumentScrollViewerAutomationPeer.cs
- ExpressionBuilder.cs
- TextServicesProperty.cs
- EntityDesignerDataSourceView.cs
- SynchronizedInputPattern.cs
- AsymmetricSignatureDeformatter.cs
- Metadata.cs
- DataFormats.cs
- EFColumnProvider.cs
- SqlBuilder.cs
- TransformationRules.cs
- DispatcherHookEventArgs.cs
- TextBounds.cs
- FormViewRow.cs
- LogLogRecord.cs
- KeyTimeConverter.cs
- TreeNodeStyleCollection.cs
- Clause.cs
- MetricEntry.cs
- ExceptionCollection.cs
- Point3DCollectionConverter.cs
- Margins.cs
- SpellerStatusTable.cs
- DeclarativeCatalogPart.cs
- DoubleAnimation.cs
- InputLanguageSource.cs
- PathSegmentCollection.cs
- ToolboxItemCollection.cs
- SqlDataSourceEnumerator.cs
- PropertyMapper.cs
- NativeMethodsOther.cs
- SiteOfOriginPart.cs
- DiscoveryEndpointElement.cs
- DesignerView.cs
- ZipArchive.cs
- WebPartDescription.cs
- DiscreteKeyFrames.cs
- XmlCharCheckingWriter.cs
- Socket.cs
- InvalidProgramException.cs
- SecurityState.cs
- XsdDataContractExporter.cs
- CannotUnloadAppDomainException.cs
- UpdateEventArgs.cs
- SendMessageRecord.cs
- PathSegmentCollection.cs
- PropertyRecord.cs
- SortDescription.cs
- NativeMethods.cs
- MultiAsyncResult.cs
- FactoryRecord.cs
- WebPartTracker.cs
- VolatileEnlistmentMultiplexing.cs
- IPPacketInformation.cs
- ObsoleteAttribute.cs
- CompilationPass2TaskInternal.cs
- CapabilitiesRule.cs
- Descriptor.cs
- ConstantSlot.cs
- SoapReflector.cs
- DataListItemCollection.cs
- OpCodes.cs
- SqlClientMetaDataCollectionNames.cs
- SeparatorAutomationPeer.cs
- SchemaMapping.cs
- HttpHandlerActionCollection.cs
- CodeAttributeArgumentCollection.cs
- CodeMemberProperty.cs
- BlurBitmapEffect.cs
- Helper.cs
- BamlLocalizerErrorNotifyEventArgs.cs
- BigInt.cs
- SqlConnectionPoolProviderInfo.cs
- ValidationResults.cs
- KeyedCollection.cs
- RawStylusInputCustomDataList.cs