예제 #1
0
        private (IModelGraph, ImmutableDictionary <object, IModelNode>) UpdateNodeCore(
            [NotNull] IModelNode updatedNode,
            [NotNull] IModelGraph modelGraph,
            [NotNull] ImmutableDictionary <object, IModelNode> payloadToModelNodeMap,
            [NotNull][ItemNotNull] ICollection <ModelItemEventBase> itemEvents)
        {
            var oldNode = GetNode(updatedNode.Id);

            itemEvents.Add(new ModelNodeUpdatedEvent(oldNode, updatedNode));

            if (oldNode.Payload != null)
            {
                payloadToModelNodeMap = payloadToModelNodeMap.Remove(oldNode.Payload);
            }

            if (updatedNode.Payload != null)
            {
                payloadToModelNodeMap = payloadToModelNodeMap.Add(updatedNode.Payload, updatedNode);
            }

            return(
                modelGraph.UpdateVertex(updatedNode),
                payloadToModelNodeMap
                );
        }
예제 #2
0
 public IModel ReplaceNode(IModelNode newNode) => CreateInstance(_graph.UpdateVertex(newNode));
예제 #3
0
 public IModel UpdateNode(IModelNode updatedNode) => CreateInstance(_graph.UpdateVertex(updatedNode));