mscorlib(4.0.0.0) API with additions
ReadOnlyPermissionSet.cs
1 using System.Collections;
3 
4 namespace System.Security
5 {
8  public sealed class ReadOnlyPermissionSet : PermissionSet
9  {
10  private SecurityElement m_originXml;
11 
12  [NonSerialized]
13  private bool m_deserializing;
14 
17  public override bool IsReadOnly => true;
18 
23  public ReadOnlyPermissionSet(SecurityElement permissionSetXml)
24  {
25  if (permissionSetXml == null)
26  {
27  throw new ArgumentNullException("permissionSetXml");
28  }
29  m_originXml = permissionSetXml.Copy();
30  base.FromXml(m_originXml);
31  }
32 
33  [OnDeserializing]
34  private void OnDeserializing(StreamingContext ctx)
35  {
36  m_deserializing = true;
37  }
38 
39  [OnDeserialized]
40  private void OnDeserialized(StreamingContext ctx)
41  {
42  m_deserializing = false;
43  }
44 
47  public override PermissionSet Copy()
48  {
49  return new ReadOnlyPermissionSet(m_originXml);
50  }
51 
54  public override SecurityElement ToXml()
55  {
56  return m_originXml.Copy();
57  }
58 
59  protected override IEnumerator GetEnumeratorImpl()
60  {
61  return new ReadOnlyPermissionSetEnumerator(base.GetEnumeratorImpl());
62  }
63 
64  protected override IPermission GetPermissionImpl(Type permClass)
65  {
66  return base.GetPermissionImpl(permClass)?.Copy();
67  }
68 
69  protected override IPermission AddPermissionImpl(IPermission perm)
70  {
71  throw new InvalidOperationException(Environment.GetResourceString("InvalidOperation_ModifyROPermSet"));
72  }
73 
79  public override void FromXml(SecurityElement et)
80  {
81  if (m_deserializing)
82  {
83  base.FromXml(et);
84  return;
85  }
86  throw new InvalidOperationException(Environment.GetResourceString("InvalidOperation_ModifyROPermSet"));
87  }
88 
89  protected override IPermission RemovePermissionImpl(Type permClass)
90  {
91  throw new InvalidOperationException(Environment.GetResourceString("InvalidOperation_ModifyROPermSet"));
92  }
93 
94  protected override IPermission SetPermissionImpl(IPermission perm)
95  {
96  throw new InvalidOperationException(Environment.GetResourceString("InvalidOperation_ModifyROPermSet"));
97  }
98  }
99 }
The exception that is thrown when a null reference (Nothing in Visual Basic) is passed to a method th...
override IPermission RemovePermissionImpl(Type permClass)
Removes a permission of a certain type from the set.
Represents a read-only collection that can contain many different types of permissions.
Definition: __Canon.cs:3
IPermission Copy()
Creates and returns an identical copy of the current permission.
override IPermission AddPermissionImpl(IPermission perm)
Adds a specified permission to the T:System.Security.PermissionSet.
Describes the source and destination of a given serialized stream, and provides an additional caller-...
override SecurityElement ToXml()
Creates an XML encoding of the security object and its current state.
override IPermission GetPermissionImpl(Type permClass)
Gets a permission object of the specified type, if it exists in the set.
Provides information about, and means to manipulate, the current environment and platform....
Definition: Environment.cs:21
Represents a collection that can contain many different types of permissions.
Represents the XML object model for encoding security objects. This class cannot be inherited.
ReadOnlyPermissionSet(SecurityElement permissionSetXml)
Initializes a new instance of the T:System.Security.ReadOnlyPermissionSet class.
override bool IsReadOnly
Gets a value that indicates whether the collection is read-only.
Represents type declarations: class types, interface types, array types, value types,...
Definition: Type.cs:18
Defines methods implemented by permission types.
Definition: IPermission.cs:7
Specifies that the class can be serialized.
The exception that is thrown when a method call is invalid for the object's current state.
override void FromXml(SecurityElement et)
Reconstructs a security object with a specified state from an XML encoding.
override PermissionSet Copy()
Creates a copy of the T:System.Security.ReadOnlyPermissionSet.
override IPermission SetPermissionImpl(IPermission perm)
Sets a permission to the T:System.Security.PermissionSet, replacing any existing permission of the sa...
override IEnumerator GetEnumeratorImpl()
Returns an enumerator for the permissions of the set.
Supports a simple iteration over a non-generic collection.
Definition: IEnumerator.cs:9