/// <summary> /// Tries to create a configuration for the resolver. /// </summary> /// <param name="factory">The factory used to get and set the configuration.</param> /// <param name="mod">The mod to assign the configuration to.</param> /// <returns>The configuration.</returns> public static ProviderFactoryConfiguration?TryCreate(IPackageProviderFactory factory, PathTuple <ApplicationConfig> mod) { var isEnabled = factory.TryGetConfigurationOrDefault(mod, out var configuration); if (configuration == null) { return(null); } return(new ProviderFactoryConfiguration() { Configuration = configuration, IsEnabled = isEnabled, Factory = factory }); }
/// <summary> /// Assigns a configuration of type T to the application. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="factory">The factory from which the configuration is sourced from.</param> /// <param name="application">The application config to assign the configuration to.</param> /// <param name="value">The configuration value to set.</param> /// <returns>Whether the configuration was found or not.</returns> public static void SetConfiguration <T>(this IPackageProviderFactory factory, PathTuple <ApplicationConfig> application, T value) { application.Config.PluginData[factory.ResolverId] = value; }
/// <summary> /// Removes a configuration from the application. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="factory">The factory from which the configuration is sourced from.</param> /// <param name="application">The application config to assign the configuration to.</param> /// <returns>Whether the configuration was found or not.</returns> public static void RemoveConfiguration <T>(this IPackageProviderFactory factory, PathTuple <ApplicationConfig> application) { application.Config.PluginData.Remove(factory.ResolverId); }
/// <summary> /// Attempts to get a configuration of type T. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="factory">The factory to get configuration from.</param> /// <param name="application">The application config to get configuration from.</param> /// <param name="configuration">The returned configuration.</param> /// <returns>Whether the configuration was found or not.</returns> public static bool TryGetConfiguration <T>(this IPackageProviderFactory factory, PathTuple <ApplicationConfig> application, out T?configuration) { return(application.Config.PluginData.TryGetValue <T>(factory.ResolverId, out configuration)); }