コード例 #1
0
        /// <summary>
        /// Processes the instance edit.
        /// </summary>
        /// <param name="runtime">The runtime.</param>
        /// <param name="result">The result.</param>
        /// <param name="view">The view.</param>
        /// <param name="editAction">The edit action.</param>
        /// <returns>ExecutionView.</returns>
        /// <exception cref="System.NotSupportedException">Error occured during edit:  + lastError</exception>
        /// <exception cref="System.Collections.Generic.KeyNotFoundException">Specified edit hasn't been found</exception>
        private static ExecutionView processInstanceEdit(RuntimeAssembly runtime, AnalyzingResult result, ExecutionView view, EditAction editAction)
        {
            var    editOwner = result.EntryContext.GetValue(editAction.Variable);
            string lastError = null;

            foreach (var edit in editOwner.Edits)
            {
                if (edit.Name != editAction.Name)
                {
                    continue;
                }

                var editView   = new EditView(view);
                var resultView = runtime.RunEdit(edit, editView);
                editView = (resultView as EditView);

                if (editView.HasError)
                {
                    lastError = editView.Error;
                    continue;
                }

                return(editView.CopyView());
            }

            if (lastError != null)
            {
                throw new NotSupportedException("Error occured during edit: " + lastError);
            }

            throw new KeyNotFoundException("Specified edit hasn't been found");
        }