Update Reference Sources to .NET Framework 4.6.1
[mono.git] / mcs / class / referencesource / mscorlib / system / security / permissions / gacidentitypermission.cs
1 // ==++==
2 // 
3 //   Copyright (c) Microsoft Corporation.  All rights reserved.
4 // 
5 // ==--==
6 // GacIdentityPermission.cs
7 // 
8 // <OWNER>[....]</OWNER>
9 // 
10
11 namespace System.Security.Permissions
12 {
13     using System;
14 #if FEATURE_CAS_POLICY
15     using SecurityElement = System.Security.SecurityElement;
16 #endif // FEATURE_CAS_POLICY
17     using System.Globalization;
18
19     [AttributeUsage(AttributeTargets.Method | AttributeTargets.Constructor | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Assembly, AllowMultiple = true, Inherited = false )]
20     [System.Runtime.InteropServices.ComVisible(true)]
21     [Serializable]
22 #pragma warning disable 618
23     sealed public class GacIdentityPermissionAttribute : CodeAccessSecurityAttribute
24 #pragma warning restore 618
25     {
26 #pragma warning disable 618
27         public GacIdentityPermissionAttribute( SecurityAction action )
28 #pragma warning restore 618
29             : base( action )
30         {
31         }
32
33         public override IPermission CreatePermission()
34         {
35             return new GacIdentityPermission();
36         }
37     }
38
39
40     [System.Runtime.InteropServices.ComVisible(true)]
41     [Serializable]
42     sealed public class GacIdentityPermission : CodeAccessPermission, IBuiltInPermission
43     {
44         //------------------------------------------------------
45         //
46         // PUBLIC CONSTRUCTORS
47         //
48         //------------------------------------------------------
49
50         public GacIdentityPermission(PermissionState state)
51         {
52             if (state != PermissionState.Unrestricted && state != PermissionState.None)
53             {
54                 throw new ArgumentException(Environment.GetResourceString("Argument_InvalidPermissionState"));
55             }
56         }
57
58         public GacIdentityPermission()
59         {
60         }
61
62         //------------------------------------------------------
63         //
64         // IPERMISSION IMPLEMENTATION
65         //
66         //------------------------------------------------------
67
68
69         public override IPermission Copy()
70         {
71             return new GacIdentityPermission();
72         }
73
74         public override bool IsSubsetOf(IPermission target)
75         {
76             if (target == null)
77                 return false;
78             if (!(target is GacIdentityPermission))
79                 throw new ArgumentException(Environment.GetResourceString("Argument_WrongType", this.GetType().FullName));
80             return true;
81         }
82
83         public override IPermission Intersect(IPermission target)
84         {
85             if (target == null)
86                 return null;
87             if (!(target is GacIdentityPermission))
88                 throw new ArgumentException(Environment.GetResourceString("Argument_WrongType", this.GetType().FullName));
89             return this.Copy();
90         }
91
92         public override IPermission Union(IPermission target)
93         {
94             if (target == null)
95                 return this.Copy();
96             if (!(target is GacIdentityPermission))
97                 throw new ArgumentException(Environment.GetResourceString("Argument_WrongType", this.GetType().FullName));
98             return this.Copy();
99         }
100
101 #if FEATURE_CAS_POLICY
102         public override SecurityElement ToXml()
103         {
104             SecurityElement securityElement = CodeAccessPermission.CreatePermissionElement( this, "System.Security.Permissions.GacIdentityPermission" );
105             return securityElement;
106         }
107
108         public override void FromXml(SecurityElement securityElement)
109         {
110             CodeAccessPermission.ValidateElement(securityElement, this);
111         }
112 #endif // FEATURE_CAS_POLICY
113
114         /// <internalonly/>
115         int IBuiltInPermission.GetTokenIndex()
116         {
117             return GacIdentityPermission.GetTokenIndex();
118         }
119
120         internal static int GetTokenIndex()
121         {
122             return BuiltInPermissionIndex.GacIdentityPermissionIndex;
123         }
124     }
125 }