static bool TryProcessPermissionSetAttribute(SecurityDeclaration declaration, out PermissionSet set)
{
set = null;
if (!declaration.HasSecurityAttributes && declaration.SecurityAttributes.Count != 1)
{
return(false);
}
var security_attribute = declaration.SecurityAttributes [0];
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;
set = attribute.CreatePermissionSet();
return(true);
}