namespace Tapeti.Config
{
///
///
/// Extends the message context with information about the controller.
///
public interface IControllerMessageContext : IMessageContext
{
///
/// An instance of the controller referenced by the binding.
///
object Controller { get; }
///
/// Provides access to the binding which is currently processing the message.
///
new IControllerMethodBinding Binding { get; }
///
/// Stores a key-value pair in the context for passing information between the various
/// controller middleware stages (IControllerMiddlewareBase descendants).
///
/// A unique key. It is recommended to prefix it with the package name which hosts the middleware to prevent conflicts
/// Will be disposed if the value implements IDisposable
void Store(string key, object value);
///
/// Retrieves a previously stored value.
///
///
///
/// True if the value was found, False otherwise
bool Get(string key, out T value) where T : class;
}
}