private async Task <ISaga> CreateNewSaga(ISagaModel model, SagaID id) { if (id == SagaID.Empty()) { id = SagaID.New(); } ISagaData data = (ISagaData)Activator.CreateInstance(model.SagaStateType); data.ID = id; ISaga saga = new Saga { Data = data, ExecutionInfo = new SagaExecutionInfo { ModelName = model.Name, Created = dateTimeProvider.Now, Modified = dateTimeProvider.Now }, ExecutionState = new SagaExecutionState { CurrentState = new SagaStartState().GetStateName(), CurrentStep = null } }; return(saga); }