dotnet-cqrs/Svrnty.CQRS.Events/Sagas/SagaContext.cs

36 lines
895 B
C#

using System;
using Svrnty.CQRS.Events.Abstractions.Sagas;
namespace Svrnty.CQRS.Events.Sagas;
/// <summary>
/// Context for saga execution.
/// </summary>
public sealed class SagaContext : ISagaContext
{
public SagaContext(ISaga saga, SagaState state, ISagaData data)
{
Saga = saga ?? throw new ArgumentNullException(nameof(saga));
State = state;
Data = data ?? throw new ArgumentNullException(nameof(data));
}
/// <inheritdoc />
public ISaga Saga { get; }
/// <inheritdoc />
public SagaState State { get; internal set; }
/// <inheritdoc />
public ISagaData Data { get; }
/// <inheritdoc />
public T? Get<T>(string key) => Data.Get<T>(key);
/// <inheritdoc />
public void Set<T>(string key, T value) => Data.Set(key, value);
/// <inheritdoc />
public bool Contains(string key) => Data.Contains(key);
}