Beispiel #1
0
        public static IModel Create(
            [NotNull] ISequenceProvider sequenceProvider,
            [CanBeNull] IEnumerable <IModelRuleProvider> modelRuleProviders            = null,
            [CanBeNull] IEqualityComparer <object> nodePayloadEqualityComparer         = null,
            [CanBeNull] IEqualityComparer <object> relationshipPayloadEqualityComparer = null)
        {
            var payloadToModelNodeMap = ImmutableDictionary <object, IModelNode> .Empty;

            if (nodePayloadEqualityComparer != null)
            {
                payloadToModelNodeMap = payloadToModelNodeMap.WithComparers(nodePayloadEqualityComparer);
            }

            var payloadToModelRelationshipMap = ImmutableDictionary <object, IModelRelationship> .Empty;

            if (relationshipPayloadEqualityComparer != null)
            {
                payloadToModelRelationshipMap = payloadToModelRelationshipMap.WithComparers(relationshipPayloadEqualityComparer);
            }

            return(new Model(
                       ModelGraph.Empty(allowParallelEdges: false),
                       payloadToModelNodeMap,
                       payloadToModelRelationshipMap,
                       sequenceProvider,
                       modelRuleProviders,
                       nodePayloadEqualityComparer,
                       relationshipPayloadEqualityComparer));
        }
Beispiel #2
0
        public Model()
        {
            _graph = new ModelGraph();

            _graph.VertexAdded   += i => EntityAdded?.Invoke(i);
            _graph.VertexRemoved += i => EntityRemoved?.Invoke(i);
            _graph.EdgeAdded     += i => RelationshipAdded?.Invoke(i);
            _graph.EdgeRemoved   += i => RelationshipRemoved?.Invoke(i);
            _graph.Cleared       += (i, j) => ModelCleared?.Invoke();
        }
Beispiel #3
0
 public static IModel Create([NotNull] params IModelRuleProvider[] modelRuleProviders)
 {
     return(new Model(ModelGraph.Empty(allowParallelEdges: false), modelRuleProviders));
 }
Beispiel #4
0
 protected virtual IModel CreateInstance(ModelGraph graph) => new Model(graph);
Beispiel #5
0
 protected Model(ModelGraph graph)
 {
     Graph = graph;
 }