Files
mixtape/zero.Core/Communication/Interceptors/InterceptorParameters.cs
T
2021-11-20 13:52:28 +01:00

42 lines
1.2 KiB
C#

namespace zero.Communication;
public class InterceptorParameters<T> : InterceptorParameters where T : ZeroIdEntity, new()
{
/// <summary>
/// Access to the collection which has initiated the interceptor instruction
/// </summary>
public IEntityCollection<T> Collection { get; set; }
}
public class InterceptorParameters
{
/// <summary>
/// The current zero context
/// </summary>
public IZeroContext Context { get; set; }
/// <summary>
/// Raven document store
/// </summary>
public IZeroStore Store { get; set; }
/// <summary>
/// TODO
/// </summary>
public InterceptorRunnerProxy Interceptors { get; set; }
/// <summary>
/// Parameters from the interceptor which ran on before the operation (only available for completed operations)
/// </summary>
public Dictionary<string, object> Properties { get; set; } = new();
/// <summary>
/// Get a typed property
/// </summary>
public TProp Property<TProp>(string key) => Properties.GetValueOrDefault<TProp>(key);
/// <summary>
/// Get a typed property
/// </summary>
public bool TryGetProperty<TProp>(string key, out TProp property) => Properties.TryGetValue(key, out property);
}