/// <summary> /// Invoke this hook with a certain parameter registry if optional conditional criteria are satisfied. /// </summary> /// <param name="registry">The registry containing the required values for this hook's execution.</param> /// <param name="resolver">A helper resolver for complex registry entries (automatically cached).</param> public override void SubInvoke(IRegistry registry, IRegistryResolver resolver) { string registryEntryToSave = ParameterRegistry.Get <string>("registry_entry_to_save"); INamer fileNamer = ParameterRegistry.Get <INamer>("file_namer"); object toSerialise = resolver.ResolveGetSingle <object>(registryEntryToSave); bool verbose = ParameterRegistry.Get <bool>("verbose"); Func <T, T> selectFunction = ParameterRegistry.Get <Func <T, T> >("select_function"); toSerialise = selectFunction.Invoke((T)toSerialise); lock (fileNamer) { Serialisation.WriteBinaryFile(toSerialise, fileNamer.GetName(registry, resolver, this), verbose: false); } if (verbose) { _logger.Info($"Saved \"{registryEntryToSave}\" to \"{SigmaEnvironment.Globals.Get<string>("storage_path")}{fileNamer}\"."); } }