Esempio n. 1
0
        public FormFlowInstance <TState> CreateInstance <TState>(
            TState state,
            IReadOnlyDictionary <object, object> properties = null)
        {
            if (state == null)
            {
                throw new ArgumentNullException(nameof(state));
            }

            if (typeof(TState) != _flowDescriptor.StateType)
            {
                throw new InvalidOperationException(
                          $"{typeof(TState).Name} is not compatible with {_flowDescriptor.StateType.Name}.");
            }

            var instanceId = FormFlowInstanceId.Generate(
                _flowDescriptor,
                _actionContext.HttpContext.Request,
                _actionContext.RouteData);

            var instance = (FormFlowInstance <TState>)_stateProvider.CreateInstance(
                _flowDescriptor.Key,
                instanceId,
                _flowDescriptor.StateType,
                state, properties);

            _actionContext.HttpContext.Features.Set(new FormFlowInstanceFeature(instance));

            return(instance);
        }