void Update(ICommand<UserId> c, Action<UserAggregate> action)
        {
            var stream = _store.LoadEventStream(c.Id);
            var state = new UserState(stream.Events);
            var agg = new UserAggregate(state);

            using (var capture = Context.CaptureForThread())
            {
                agg.ThrowOnInvalidStateTransition(c);
                action(agg);
                _store.AppendToStream(c.Id, stream.Version, agg.Changes, capture.Log);
            }
        }
 public UserAggregate(UserState state)
 {
     _state = state;
 }