2 // System.Security.Permissions.ReflectionPermissionAttribute.cs
5 // Duncan Mak <duncan@ximian.com>
6 // Sebastien Pouliot <spouliot@motus.com>
8 // (C) 2002 Ximian, Inc. http://www.ximian.com
9 // Portions Copyright (C) 2003 Motus Technologies (http://www.motus.com)
14 namespace System.Security.Permissions {
16 [AttributeUsage (AttributeTargets.Assembly | AttributeTargets.Class |
17 AttributeTargets.Struct | AttributeTargets.Constructor |
18 AttributeTargets.Method, AllowMultiple=true, Inherited=false)]
20 public sealed class ReflectionPermissionAttribute : CodeAccessSecurityAttribute {
23 private ReflectionPermissionFlag flags;
24 private bool memberAccess;
25 private bool reflectionEmit;
26 private bool typeInfo;
29 public ReflectionPermissionAttribute (SecurityAction action) : base (action) {}
32 public ReflectionPermissionFlag Flags
37 memberAccess = ((flags & ReflectionPermissionFlag.MemberAccess) == ReflectionPermissionFlag.MemberAccess);
38 reflectionEmit = ((flags & ReflectionPermissionFlag.ReflectionEmit) == ReflectionPermissionFlag.ReflectionEmit);
39 typeInfo = ((flags & ReflectionPermissionFlag.TypeInformation) == ReflectionPermissionFlag.TypeInformation);
43 public bool MemberAccess
45 get { return memberAccess; }
48 flags |= ReflectionPermissionFlag.MemberAccess;
50 flags -= ReflectionPermissionFlag.MemberAccess;
55 public bool ReflectionEmit
57 get { return reflectionEmit; }
60 flags |= ReflectionPermissionFlag.ReflectionEmit;
62 flags -= ReflectionPermissionFlag.ReflectionEmit;
63 reflectionEmit = value;
67 public bool TypeInformation
69 get { return typeInfo; }
72 flags |= ReflectionPermissionFlag.TypeInformation;
74 flags -= ReflectionPermissionFlag.TypeInformation;
80 public override IPermission CreatePermission ()
82 ReflectionPermission perm = null;
83 if (this.Unrestricted)
84 perm = new ReflectionPermission (PermissionState.Unrestricted);
86 perm = new ReflectionPermission (flags);