Exemple #1
0
        /// <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}\".");
            }
        }