using System;
namespace Abp.Configuration
{
///
/// Defines interface to use a dictionary to make configurations.
///
public interface IDictionaryBasedConfig
{
///
/// Used to set a string named configuration.
/// If there is already a configuration with same , it's overwritten.
///
/// Unique name of the configuration
/// Value of the configuration
/// Returns the passed
void Set(string name, T value);
///
/// Gets a configuration object with given name.
///
/// Unique name of the configuration
/// Value of the configuration or null if not found
object Get(string name);
///
/// Gets a configuration object with given name.
///
/// Type of the object
/// Unique name of the configuration
/// Value of the configuration or null if not found
T Get(string name);
///
/// Gets a configuration object with given name.
///
/// Unique name of the configuration
/// Default value of the object if can not found given configuration
/// Value of the configuration or null if not found
object Get(string name, object defaultValue);
///
/// Gets a configuration object with given name.
///
/// Type of the object
/// Unique name of the configuration
/// Default value of the object if can not found given configuration
/// Value of the configuration or null if not found
T Get(string name, T defaultValue);
///
/// Gets a configuration object with given name.
///
/// Type of the object
/// Unique name of the configuration
/// The function that will be called to create if given configuration is not found
/// Value of the configuration or null if not found
T GetOrCreate(string name, Func creator);
}
}