public IPolicyContainerConfiguration AddPolicy(ISecurityPolicy securityPolicy) { Publish.ConfigurationEvent(() => "Updating policies for {0} action {1} using {2}.".FormatWith(ControllerName, ActionName, PolicyAppender.GetType().FullName)); var policiesBeforeUpdate = new ISecurityPolicy[_policies.Count]; _policies.CopyTo(policiesBeforeUpdate, 0); PolicyAppender.UpdatePolicies(securityPolicy, _policies); var policiesRemoved = policiesBeforeUpdate.Except(_policies).ToList(); policiesRemoved.Each(p => Publish.ConfigurationEvent(() => "- Removed policy {0} [{1}].".FormatWith(p.GetPolicyType().FullName, p is ILazySecurityPolicy ? "Lazy" : "Instance"))); var policiesAdded = _policies.Except(policiesBeforeUpdate).ToList(); policiesAdded.Each(p => Publish.ConfigurationEvent(() => "- Added policy {0} [{1}].".FormatWith(p.GetPolicyType().FullName, p is ILazySecurityPolicy ? "Lazy" : "Instance"))); return(this); }