// validate all the passed in types to fail at reflection time as far as possible #region IAuditManager Members public void Invoke(INakedObject nakedObject, INakedObject[] parameters, bool queryOnly, IIdentifier identifier, ISession session, ILifecycleManager lifecycleManager, IMetamodelManager manager) { IAuditor auditor = GetAuditor(nakedObject, lifecycleManager, manager); IPrincipal byPrincipal = session.Principal; string memberName = identifier.MemberName; if (nakedObject.Spec is IServiceSpec) { string serviceName = nakedObject.Spec.GetTitle(nakedObject); auditor.ActionInvoked(byPrincipal, memberName, serviceName, queryOnly, parameters.Select(no => no.GetDomainObject()).ToArray()); } else { auditor.ActionInvoked(byPrincipal, memberName, nakedObject.GetDomainObject(), queryOnly, parameters.Select(no => no.GetDomainObject()).ToArray()); } }