using System.Runtime.CompilerServices;

namespace eNavigator.Interfaces
{
  public interface IStateContainer
  {
    public T Get<T>(String name, [CallerMemberName] string callerMember = null);
    public T Coalesce<T>(String name, T defaultValue = default(T),[CallerMemberName] String callerMember = null);
    public List<String> GetNames();
    public void Clear();
    public IStateContainer InsertOrUpdate(String name, Object value, [CallerMemberName] String callerMember = null);
    public void Remove(String name);
    public bool Has(String name);
  }
}