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
- SemaphoreFullException.cs
- CqlGenerator.cs
- WebPartConnectionsConnectVerb.cs
- RowVisual.cs
- ConfigurationStrings.cs
- __FastResourceComparer.cs
- EdmConstants.cs
- HybridObjectCache.cs
- SqlServer2KCompatibilityAnnotation.cs
- EmbossBitmapEffect.cs
- WindowsSpinner.cs
- BindingCollectionElement.cs
- FilterableAttribute.cs
- ApplicationInfo.cs
- ConfigurationElementCollection.cs
- ProviderCollection.cs
- ControlType.cs
- Vector3DKeyFrameCollection.cs
- WebPartEditVerb.cs
- XsltConvert.cs
- _HTTPDateParse.cs
- Int64KeyFrameCollection.cs
- RightsManagementEncryptionTransform.cs
- Preprocessor.cs
- X509CertificateStore.cs
- FilterEventArgs.cs
- ScrollPattern.cs
- BinaryFormatterWriter.cs
- CrossContextChannel.cs
- IgnoreSectionHandler.cs
- SafeCertificateStore.cs
- WebPartConnectionsDisconnectVerb.cs
- formatter.cs
- BooleanExpr.cs
- CssStyleCollection.cs
- FloaterBaseParaClient.cs
- ObjectNavigationPropertyMapping.cs
- ConnectionStringsExpressionBuilder.cs
- altserialization.cs
- WindowsSysHeader.cs
- TableStyle.cs
- CookieHandler.cs
- ImageCodecInfo.cs
- XmlSerializationWriter.cs
- OdbcStatementHandle.cs
- MaskedTextBoxDesigner.cs
- MimeParameterWriter.cs
- ActivityExecutorDelegateInfo.cs
- BindingsCollection.cs
- CodeAccessSecurityEngine.cs
- ProcessHostServerConfig.cs
- contentDescriptor.cs
- TreeWalker.cs
- HttpApplicationFactory.cs
- Point3DKeyFrameCollection.cs
- ContourSegment.cs
- _AuthenticationState.cs
- HwndSourceParameters.cs
- XMLSyntaxException.cs
- PointLightBase.cs
- CompressionTransform.cs
- CancellationToken.cs
- UncommonField.cs
- MasterPageCodeDomTreeGenerator.cs
- SystemWebSectionGroup.cs
- UserNameSecurityToken.cs
- CodeDesigner.cs
- KeyMatchBuilder.cs
- connectionpool.cs
- FreezableDefaultValueFactory.cs
- DefaultValueAttribute.cs
- Exceptions.cs
- InProcStateClientManager.cs
- TableTextElementCollectionInternal.cs
- COAUTHINFO.cs
- EncryptedXml.cs
- ActivityFunc.cs
- CreateParams.cs
- FileReservationCollection.cs
- LayoutUtils.cs
- DocumentEventArgs.cs
- ObjectViewEntityCollectionData.cs
- MetadataWorkspace.cs
- ProcessStartInfo.cs
- FileDialogCustomPlace.cs
- BasicExpressionVisitor.cs
- PasswordPropertyTextAttribute.cs
- ReadOnlyHierarchicalDataSource.cs
- CharacterHit.cs
- TextEditorSpelling.cs
- PackWebRequest.cs
- HotSpot.cs
- XmlDocument.cs
- VirtualPath.cs
- AspCompat.cs
- WebPartConnectionsConfigureVerb.cs
- TextRunProperties.cs
- OracleCommand.cs
- SymmetricAlgorithm.cs
- LocationSectionRecord.cs