Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / clr / src / BCL / System / Security / Permissions / FileDialogPermission.cs / 1 / FileDialogPermission.cs
// ==++==
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// ==--==
// FileDialogPermission.cs
//
namespace System.Security.Permissions {
using System;
using System.Text;
using System.Security;
using System.Security.Util;
using System.IO;
using System.Runtime.Serialization;
using System.Reflection;
using System.Collections;
using System.Globalization;
[Serializable, Flags]
[System.Runtime.InteropServices.ComVisible(true)]
public enum FileDialogPermissionAccess {
None = 0x00,
Open = 0x01,
Save = 0x02,
OpenSave = Open | Save
}
[Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class FileDialogPermission : CodeAccessPermission, IUnrestrictedPermission, IBuiltInPermission {
FileDialogPermissionAccess access;
public FileDialogPermission(PermissionState state) {
if (state == PermissionState.Unrestricted) {
SetUnrestricted(true);
}
else if (state == PermissionState.None) {
SetUnrestricted(false);
Reset();
}
else {
throw new ArgumentException(Environment.GetResourceString("Argument_InvalidPermissionState"));
}
}
public FileDialogPermission(FileDialogPermissionAccess access) {
VerifyAccess(access);
this.access = access;
}
public FileDialogPermissionAccess Access {
get {
return access;
}
set {
VerifyAccess(value);
access = value;
}
}
public override IPermission Copy() {
return new FileDialogPermission(this.access);
}
public override void FromXml(SecurityElement esd) {
CodeAccessPermission.ValidateElement(esd, this);
if (XMLUtil.IsUnrestricted(esd)) {
SetUnrestricted(true);
return;
}
access = FileDialogPermissionAccess.None;
string accessXml = esd.Attribute("Access");
if (accessXml != null)
access = (FileDialogPermissionAccess)Enum.Parse(typeof(FileDialogPermissionAccess), accessXml);
}
///
int IBuiltInPermission.GetTokenIndex() {
return FileDialogPermission.GetTokenIndex();
}
internal static int GetTokenIndex() {
return BuiltInPermissionIndex.FileDialogPermissionIndex;
}
public override IPermission Intersect(IPermission target) {
if (target == null) {
return null;
}
else if (!VerifyType(target)) {
throw new ArgumentException(String.Format(CultureInfo.CurrentCulture, Environment.GetResourceString("Argument_WrongType"), this.GetType().FullName));
}
FileDialogPermission operand = (FileDialogPermission)target;
FileDialogPermissionAccess intersectAccess = access & operand.Access;
if (intersectAccess == FileDialogPermissionAccess.None)
return null;
else
return new FileDialogPermission(intersectAccess);
}
public override bool IsSubsetOf(IPermission target) {
if (target == null) {
// Only safe subset if this is empty
return access == FileDialogPermissionAccess.None;
}
try {
FileDialogPermission operand = (FileDialogPermission)target;
if (operand.IsUnrestricted()) {
return true;
}
else if (this.IsUnrestricted()) {
return false;
}
else {
int open = (int)(access & FileDialogPermissionAccess.Open);
int save = (int)(access & FileDialogPermissionAccess.Save);
int openTarget = (int)(operand.Access & FileDialogPermissionAccess.Open);
int saveTarget = (int)(operand.Access & FileDialogPermissionAccess.Save);
return open <= openTarget && save <= saveTarget;
}
}
catch (InvalidCastException) {
throw new ArgumentException(String.Format(CultureInfo.CurrentCulture, Environment.GetResourceString("Argument_WrongType"), this.GetType().FullName));
}
}
public bool IsUnrestricted() {
return access == FileDialogPermissionAccess.OpenSave;
}
void Reset() {
access = FileDialogPermissionAccess.None;
}
void SetUnrestricted( bool unrestricted ) {
if (unrestricted) {
access = FileDialogPermissionAccess.OpenSave;
}
}
public override SecurityElement ToXml() {
SecurityElement esd = CodeAccessPermission.CreatePermissionElement( this, "System.Security.Permissions.FileDialogPermission" );
if (!IsUnrestricted()) {
if (access != FileDialogPermissionAccess.None) {
esd.AddAttribute("Access", Enum.GetName(typeof(FileDialogPermissionAccess), access));
}
}
else {
esd.AddAttribute("Unrestricted", "true");
}
return esd;
}
public override IPermission Union(IPermission target) {
if (target == null) {
return this.Copy();
}
else if (!VerifyType(target)) {
throw new ArgumentException(String.Format(CultureInfo.CurrentCulture, Environment.GetResourceString("Argument_WrongType"), this.GetType().FullName));
}
FileDialogPermission operand = (FileDialogPermission)target;
return new FileDialogPermission(access | operand.Access);
}
static void VerifyAccess(FileDialogPermissionAccess access) {
if ((access & ~FileDialogPermissionAccess.OpenSave) != 0 ) {
throw new ArgumentException(String.Format(CultureInfo.CurrentCulture, Environment.GetResourceString("Arg_EnumIllegalVal"), (int)access));
}
}
}
}
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ITreeGenerator.cs
- Converter.cs
- MasterPageCodeDomTreeGenerator.cs
- BindingManagerDataErrorEventArgs.cs
- AccessibilityHelperForVista.cs
- XmlSchemaException.cs
- EntityType.cs
- WorkflowFileItem.cs
- PreloadedPackages.cs
- ActivityCodeGenerator.cs
- ClientSession.cs
- RequestCacheManager.cs
- LineSegment.cs
- PropertyValueUIItem.cs
- ReceiveParametersContent.cs
- ReflectionUtil.cs
- BinaryFormatterWriter.cs
- HtmlToClrEventProxy.cs
- XamlGridLengthSerializer.cs
- SessionStateUtil.cs
- Thread.cs
- DataGridViewCellStyle.cs
- ObjectDataProvider.cs
- LicenseManager.cs
- PageTheme.cs
- FontFamilyConverter.cs
- Keyboard.cs
- InfoCardRSACryptoProvider.cs
- IISUnsafeMethods.cs
- LinearGradientBrush.cs
- AnimatedTypeHelpers.cs
- TemplateControlBuildProvider.cs
- BaseDataBoundControl.cs
- XmlCollation.cs
- ProxyManager.cs
- DynamicRendererThreadManager.cs
- NativeMethods.cs
- HttpCookiesSection.cs
- EventLogger.cs
- LoadRetryAsyncResult.cs
- LinearGradientBrush.cs
- Blend.cs
- ProxyWebPartConnectionCollection.cs
- HttpHeaderCollection.cs
- SmtpCommands.cs
- TrackingStringDictionary.cs
- ParameterToken.cs
- ProcessRequestArgs.cs
- FixedSOMFixedBlock.cs
- TreeNodeStyle.cs
- EventWaitHandleSecurity.cs
- MultipleViewProviderWrapper.cs
- ServiceHttpHandlerFactory.cs
- X509CertificateInitiatorClientCredential.cs
- SplitContainer.cs
- XappLauncher.cs
- WindowsContainer.cs
- DbProviderConfigurationHandler.cs
- EventManager.cs
- ApplicationHost.cs
- ResourceExpressionBuilder.cs
- DesignerActionUIService.cs
- FieldAccessException.cs
- ListComponentEditor.cs
- Image.cs
- RoleGroupCollection.cs
- Part.cs
- RtfToken.cs
- ExpressionBuilder.cs
- CustomErrorCollection.cs
- GradientPanel.cs
- CacheVirtualItemsEvent.cs
- ResumeStoryboard.cs
- CheckPair.cs
- ArgumentOutOfRangeException.cs
- TreeNodeStyleCollection.cs
- ProcessRequestArgs.cs
- PrePrepareMethodAttribute.cs
- BuildProvider.cs
- FontUnit.cs
- TextReader.cs
- TextCompositionEventArgs.cs
- DirectoryObjectSecurity.cs
- TextTreeInsertUndoUnit.cs
- ProfileSettings.cs
- TextFormatterHost.cs
- ColorConvertedBitmapExtension.cs
- DataGridViewRowHeightInfoPushedEventArgs.cs
- SourceSwitch.cs
- ContentType.cs
- ProfileInfo.cs
- CodePageEncoding.cs
- RootDesignerSerializerAttribute.cs
- ProbeMatchesMessageCD1.cs
- TypedReference.cs
- DrawingBrush.cs
- XmlObjectSerializerContext.cs
- OpenTypeLayoutCache.cs
- ActivityXRefConverter.cs
- XmlJsonReader.cs