IConfiguration
Martin Halliday edited this page Jul 14, 2016
·
4 revisions
This interface is used to provide configuration data to middleware. The interface only defines a single method with this signature:
IDisposable Register<T>(
string path,
Action<T> onChangeAction,
T defaultValue = default(T));
Below is an example of how to use this interface:
[Serializable]
internal class DocumenterConfiguration
{
public string Path { get; set; }
public bool Enabled { get; set; }
public string RequiredPermission { get; set; }
public DocumenterConfiguration()
{
Path = "/owin/endpoints";
Enabled = true;
}
}
public class DocumenterMiddleware: IMiddleware<object>, IConfigurable, IDisposable
{
private IDisposable _configurationRegistration;
private DocumenterConfiguration _configuration = new DocumenterConfiguration();
void IConfigurable.Configure(IConfiguration configuration, string path)
{
_configurationRegistration = configuration.Register(
path, cfg => _configuration = cfg, new DocumenterConfiguration());
}
void IDisposable.Dispose()
{
_configurationRegistration.Dispose();
}
}
Below is an example implementation of this interface. This implementation uses Urchin.
using System;
using OwinFramework.Interfaces.Builder;
using Urchin.Client.Interfaces;
namespace OwinFramework.Configuration.Urchin
{
/// <summary>
/// This class implements the Owin Framework IConfiguration interface using the Urchin client.
/// If you choose to use this method of configuring your middleware you must add the Urchin.Client
/// NuGet package to your application and initialize it. See Urchin documentation for more detail.
/// </summary>
public class UrchinConfiguration: IConfiguration
{
private readonly IConfigurationStore _configurationStore;
public UrchinConfiguration(IConfigurationStore configurationStore)
{
_configurationStore = configurationStore;
}
public IDisposable Register<T>(string path, Action<T> onChangeAction, T defaultValue)
{
return _configurationStore.Register(path, onChangeAction, defaultValue);
}
}
}