private static PermissionSet CreatePermissionSet(SecurityDeclaration declaration)
        {
            PermissionSet permissionSets = new PermissionSet(PermissionState.None);

            foreach (Mono.Cecil.SecurityAttribute securityAttribute in declaration.SecurityAttributes)
            {
                permissionSets.AddPermission(SecurityDeclarationRocks.CreatePermission(declaration, securityAttribute));
            }
            return(permissionSets);
        }
 private static void CompleteSecurityAttribute(System.Security.Permissions.SecurityAttribute security_attribute, Mono.Cecil.SecurityAttribute attribute)
 {
     if (attribute.HasFields)
     {
         SecurityDeclarationRocks.CompleteSecurityAttributeFields(security_attribute, attribute);
     }
     if (attribute.HasProperties)
     {
         SecurityDeclarationRocks.CompleteSecurityAttributeProperties(security_attribute, attribute);
     }
 }
        public static PermissionSet ToPermissionSet(this SecurityDeclaration self)
        {
            PermissionSet permissionSets;

            if (self == null)
            {
                throw new ArgumentNullException("self");
            }
            if (SecurityDeclarationRocks.TryProcessPermissionSetAttribute(self, out permissionSets))
            {
                return(permissionSets);
            }
            return(SecurityDeclarationRocks.CreatePermissionSet(self));
        }
        private static IPermission CreatePermission(SecurityDeclaration declaration, Mono.Cecil.SecurityAttribute attribute)
        {
            Type type = Type.GetType(attribute.AttributeType.FullName);

            if (type == null)
            {
                throw new ArgumentException("attribute");
            }
            System.Security.Permissions.SecurityAttribute securityAttribute = SecurityDeclarationRocks.CreateSecurityAttribute(type, declaration);
            if (securityAttribute == null)
            {
                throw new InvalidOperationException();
            }
            SecurityDeclarationRocks.CompleteSecurityAttribute(securityAttribute, attribute);
            return(securityAttribute.CreatePermission());
        }