|
|
- using System;
- using System.IO;
- using IPA.Config.Data;
-
- namespace IPA.Config
- {
- /// <summary>
- /// An interface for configuration providers.
- /// </summary>
- /// <remarks>
- /// Implementers must provide a default constructor. Do not assume that <see cref="File"/> will ever be set for a given object.
- /// </remarks>
- public interface IConfigProvider
- {
- /// <summary>
- /// Gets the extension <i>without</i> a dot to use for files handled by this provider.
- /// </summary>
- /// <remarks>
- /// This must work immediately, and is used to generate the <see cref="FileInfo"/> used to set
- /// <see cref="File"/>.
- /// </remarks>
- string Extension { get; }
-
- /// <summary>
- /// Sets the file that this provider will read and write to.
- /// </summary>
- /// <remarks>
- /// The provider is expected to gracefully handle this changing at any point,
- /// and is expected to close any old file handles when this is reassigned.
- /// This may be set to the same file multiple times in this object's lifetime.
- /// This will always have been set at least once before any calls to <see cref="Load"/>
- /// or <see cref="Store"/> are made.
- /// </remarks>
- FileInfo File { set; }
-
- /// <summary>
- /// Stores the <see cref="Value"/> given to disk in the format specified.
- /// </summary>
- /// <param name="value">the <see cref="Value"/> to store</param>
- void Store(Value value);
-
- /// <summary>
- /// Loads a <see cref="Value"/> from disk in whatever format this provider provides
- /// and returns it.
- /// </summary>
- /// <returns>the <see cref="Value"/> loaded</returns>
- Value Load();
- }
- }
|