public sealed class ReflectionPermission : CodeAccessPermission
Object
CodeAccessPermission
ReflectionPermissionThis type implements IPermission.
mscorlib
Reflection
Secures access to the metadata of non-public types and members through reflection.
Code with the appropriate ReflectionPermission has access to non-public members of a type . Without ReflectionPermission , code can access only the public members of assemblies.[Note: Without ReflectionPermission, untrusted code can perform the following operations on members of loaded assemblies:
]
- Obtain type information from metadata for public types and members.
- Invoke public members.
- Invoke members defined with family access in the calling code's base classes.
- Invoke members defined with assembly access in the calling code's assembly.
- Invoke members defined with
FamilyAndAssembly
orFamilyOrAssembly
access in the calling code's base classes and/or assembly.- Enumerate assemblies.
- Enumerate public types.
- Enumerate types in the calling code's assembly.
ReflectionPermission instances can allow untrusted code to obtain type and member information, invoke members, and enumerate types that would otherwise be inaccessible. [Note: Because ReflectionPermission can provide access to members and information that were not intended for public access, it is recommended that ReflectionPermission be granted only to trusted code.]
The XML encoding of a ReflectionPermission instance is defined below in EBNF format. The following conventions are used:
The following meta-language symbols are used:
- All non-literals in the grammar below are shown in normal type.
- All literals are in bold font.
BuildVersion refers to the build version of the shipping CLI. This is specified as a dotted build number such as '2412.0' .
- '*' represents a meta-language symbol suffixing an expression that can appear zero or more times.
- '?' represents a meta-language symbol suffixing an expression that can appear zero or one time.
- '+' represents a meta-language symbol suffixing an expression that can appear one or more times.
- '(',')' is used to group literals, non-literals or a mixture of literals and non-literals.
- '|' denotes an exclusive disjunction between two expressions.
- '::= ' denotes a production rule where a left hand non-literal is replaced by a right hand expression containing literals, non-literals or both.
ECMAPubKeyToken ::=
b77a5c561934e089
ReflectionPermissionFlag =
MemberAccess
|TypeInformation
Each ReflectionPermissionFlag can appear in the XML no more than once. For example, Flags=MemberAccess,MemberAccess is illegal.
The XML encoding of a ReflectionPermission instance is as follows:
ReflectionPermissionXML ::=
<IPermission
class="
System.Security.Permissions.ReflectionPermission, mscorlib,
Version=1.0.
BuildVersion,
Culture=neutral,
PublicKeyToken=
ECMAPubKeyToken"
version="1"
(
Unrestricted="true"
)
|
(
Flags="NoFlags
| (ReflectionPermissionFlag (,
ReflectionPermissionFlag)*"
)
/>
System.Security.Permissions Namespace
ReflectionPermission Constructors
ReflectionPermission Constructor
ReflectionPermission Methods
ReflectionPermission.Copy Method
ReflectionPermission.FromXml Method
ReflectionPermission.Intersect Method
ReflectionPermission.IsSubsetOf Method
ReflectionPermission.ToXml Method
ReflectionPermission.Union Method
public ReflectionPermission(ReflectionPermissionFlag flag);
Constructs and initializes a new instance of the ReflectionPermission class with the specified access.
- flag
- One or more ReflectionPermissionFlag values.
Exception Type Condition ArgumentException The flag parameter contains a value that is not a combination of ReflectionPermissionFlag values.
System.Security.Permissions.ReflectionPermission Class, System.Security.Permissions Namespace
public override IPermission Copy();
Returns a new ReflectionPermission object containing the same values as the current instance.
A new ReflectionPermission instance that contains the same values as the current instance.
[Note: The object returned by this method represents the same access to resources as the current instance.This method overrides System.Security.CodeAccessPermission.Copy and is implemented to support the IPermission interface.
]
System.Security.Permissions.ReflectionPermission Class, System.Security.Permissions Namespace
public override void FromXml(SecurityElement esd);
Reconstructs the state of a ReflectionPermission object using the specified XML encoding.
- esd
- A SecurityElement instance containing the XML encoding to use to reconstruct the state of a ReflectionPermission object.
Exception Type Condition ArgumentNullException The esd parameter is null
.ArgumentException The esd parameter is not a ReflectionPermission element. The esd parameter's version number is not valid.
The state of the current instance is changed to the state encoded in esd.[Note: For the XML encoding for this class, see the ReflectionPermission class page.
This method overrides System.Security.CodeAccessPermission.FromXml(System.Security.SecurityElement) .
]
System.Security.Permissions.ReflectionPermission Class, System.Security.Permissions Namespace
public override IPermission Intersect(IPermission target);
Returns a new ReflectionPermission object that is the intersection of the current instance and the specified object.
- target
- A ReflectionPermission instance to intersect with the current instance.
A new ReflectionPermission instance that represents the intersection of the current instance and target. If the intersection is empty, returnsnull
. If the current instance is unrestricted, returns a copy of target. If target is unrestricted, returns a copy of the current instance. If target isnull
, returnsnull
.
Exception Type Condition ArgumentException The target parameter is not null
and is not an instance of ReflectionPermission .
[Note: The intersection of two permissions is a permission that secures the resources and operations secured by both permissions. Specifically, it represents the minimum permission such that any demand that passes both permissions will also pass their intersection.This method overrides System.Security.CodeAccessPermission.Intersect(System.Security.IPermission) and is implemented to support the IPermission interface.
]
System.Security.Permissions.ReflectionPermission Class, System.Security.Permissions Namespace
public override bool IsSubsetOf(IPermission target);
Determines whether the current instance is a subset of the specified object.
- target
- A ReflectionPermission instance that is to be tested for the subset relationship.
true
if the current instance is a subset of target ; otherwise,false
. If the current instance is unrestricted, and target is not, returnsfalse
. If target is unrestricted, returnstrue
. If target isnull
and the access level of the current instance is System.Security.Permissions.ReflectionPermissionFlag.NoFlags, returnstrue
. If target isnull
and the access level of the current instance is any value other than System.Security.Permissions.ReflectionPermissionFlag.NoFlags, returnsfalse
.
Exception Type Condition ArgumentException The target parameter is not null
and is not an instance of ReflectionPermission .
[Note: The current instance is a subset of target if the current instance specifies a set of accesses to resources that is wholly contained by target . For example, a permission that represents access to type information is a subset of a permission that represents access to type information and members.This method overrides System.Security.CodeAccessPermission.IsSubsetOf(System.Security.IPermission) and is implemented to support the IPermission interface.
]
System.Security.Permissions.ReflectionPermission Class, System.Security.Permissions Namespace
public override SecurityElement ToXml();
Returns the XML encoding of the current instance.
A SecurityElement containing the XML encoding of the state of the current instance.
[Note: For the XML encoding for this class, see the ReflectionPermission class page.This method overrides System.Security.CodeAccessPermission.ToXml .
]
System.Security.Permissions.ReflectionPermission Class, System.Security.Permissions Namespace
public override IPermission Union(IPermission other);
Returns a new ReflectionPermission object that is the union of the current instance and the specified object.
- other
- A ReflectionPermission instance to be combined with the current instance.
A new ReflectionPermission instance that represents the union of the current instance and other. If the current instance or other is unrestricted, returns a ReflectionPermission instance that is unrestricted. If other isnull
, returns a copy of the current instance.
Exception Type Condition ArgumentException The other parameter is not null
and is not an instance of ReflectionPermission .
[Note: The result of a call to System.Security.Permissions.ReflectionPermission.Union(System.Security.IPermission) is a permission that represents all of the access to resources represented by both the current instance and other. Any demand that passes either the current instance or other passes their union.This method overrides System.Security.CodeAccessPermission.Union(System.Security.IPermission) and is implemented to support the IPermission interface.
]
System.Security.Permissions.ReflectionPermission Class, System.Security.Permissions Namespace