using MediatR; using System; using System.Collections.Generic; namespace IdentityServer.Application.Commands { public abstract class Command : ICommand, IRequest { public Metadata Metadata { get; } protected Command() { Metadata = new Metadata() { CorrelationId = Guid.NewGuid() }; } protected Command(Metadata metadata) { Metadata = metadata; } } public interface ICommand { } public class Metadata : Dictionary { public const string CorrelationIdKey = "CorrelationId"; public Guid CorrelationId { get { return Guid.Parse(this[CorrelationIdKey]); } set { if (ContainsKey(CorrelationIdKey)) this[CorrelationIdKey] = value.ToString(); else Add(CorrelationIdKey, value.ToString()); } } } }