diff options
author | jbevain <jbevain@gmail.com> | 2010-12-01 15:15:49 +0300 |
---|---|---|
committer | jbevain <jbevain@gmail.com> | 2010-12-01 15:15:49 +0300 |
commit | 49a4e32c9f5952a8ad031003e0d9f005da08b441 (patch) | |
tree | 1059ca63932dfe7db0042db26ae5612f5eab125b /rocks | |
parent | e38fa94cfdfb77194102dd399a0068a85b0dc7a7 (diff) |
Add support for Name attributes when creating a PermissionSet from a SecurityDeclaration
Diffstat (limited to 'rocks')
-rw-r--r-- | rocks/Mono.Cecil.Rocks/SecurityDeclarationRocks.cs | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/rocks/Mono.Cecil.Rocks/SecurityDeclarationRocks.cs b/rocks/Mono.Cecil.Rocks/SecurityDeclarationRocks.cs index d3f3c6c..24f24d9 100644 --- a/rocks/Mono.Cecil.Rocks/SecurityDeclarationRocks.cs +++ b/rocks/Mono.Cecil.Rocks/SecurityDeclarationRocks.cs @@ -60,12 +60,20 @@ namespace Mono.Cecil.Rocks { if (!security_attribute.AttributeType.IsTypeOf ("System.Security.Permissions", "PermissionSetAttribute")) return false; - var named_argument = security_attribute.Properties [0]; - if (named_argument.Name != "XML") - throw new NotSupportedException (); - var attribute = new SSP.PermissionSetAttribute ((SSP.SecurityAction) declaration.Action); - attribute.XML = (string) named_argument.Argument.Value; + + var named_argument = security_attribute.Properties [0]; + string value = (string) named_argument.Argument.Value; + switch (named_argument.Name) { + case "XML": + attribute.XML = value; + break; + case "Name": + attribute.Name = value; + break; + default: + throw new NotImplementedException (named_argument.Name); + } set = attribute.CreatePermissionSet (); return true; @@ -87,7 +95,7 @@ namespace Mono.Cecil.Rocks { { var attribute_type = Type.GetType (attribute.AttributeType.FullName); if (attribute_type == null) - throw new ArgumentException (); + throw new ArgumentException ("attribute"); var security_attribute = CreateSecurityAttribute (attribute_type, declaration); if (security_attribute == null) |