//public static VertexNodeStateContext Copy(this VertexNodeStateContext nodeStateContext, VertexNodeStateContextFactory factory) //{ // var nodeFactory = VertexNodeFactory.GetFactory(); // var context = factory.ConstructNodeContext(nodePosition: nodeStateContext.Node.Position, // nodeState: nodeStateContext.State, nodeFactory: nodeFactory); // return context; //} //public static EdgeNodeStateContext Copy(this EdgeNodeStateContext nodeStateContext, EdgeNodeStateContextFactory factory) //{ // var nodeFactory = EdgeNodeFactory.GetFactory(); // var context = factory.ConstructNodeContext(nodePosition: nodeStateContext.Node.Position, // nodeState: nodeStateContext.State, nodeFactory: nodeFactory); // return context; //} //public static VertexNodeStateContextContainer Copy( // this VertexNodeStateContextContainer nodeStateContextContainer, // VertexNodeStateContextFactory factory) //{ // var container = new VertexNodeStateContextContainer(); // foreach (var nodeStateContext in nodeStateContextContainer.Values) // { // container.Values.Add(nodeStateContext.Key, nodeStateContext.Value.Copy(factory)); // } // return container; //} //public static EdgeNodeStateContextContainer Copy( // this EdgeNodeStateContextContainer nodeStateContextContainer, // EdgeNodeStateContextFactory factory) //{ // var container = new EdgeNodeStateContextContainer(); // foreach (var nodeStateContext in nodeStateContextContainer.Values) // { // container.Values.Add(nodeStateContext.Key, nodeStateContext.Value.Copy(factory)); // } // return container; //} public static List <V> Copy <V>( this List <V> nodeStateContextList, VertexNodeStateContextFlyweightFactory <V> factory) where V : VertexNodeStateContext, new() { var container = new List <V>(nodeStateContextList.Count); foreach (var nodeStateContext in nodeStateContextList) { container.Add(nodeStateContext.Copy(nodeStateContext, factory)); } return(container); }
public NodeStateContextContainerFacadeFlyweightFactory( EdgeNodeStateContextFlyweightFactory <E> edgeNodeStateContextFactory, VertexNodeStateContextFlyweightFactory <V> vertexNodeStateContextFactory) { if (edgeNodeStateContextFactory == null) { throw new NullReferenceException("edgeNodeStateContextFactory cannot be null"); } EdgeNodeStateContextFactory = edgeNodeStateContextFactory; if (vertexNodeStateContextFactory == null) { throw new NullReferenceException("vertexNodeStateContextFactory cannot be null"); } VertexNodeStateContextFactory = vertexNodeStateContextFactory; }