Пример #1
0
        public GraphSceneDisplayMeshVisitor(
            IGraphSceneDisplayMesh <TSinkItem, TSinkEdge> mesh,
            IGraphSceneDisplayMeshBackHandler <TSinkItem, TSinkEdge> backHandler,
            IGraph <TSinkItem, TSinkEdge> graph,
            TSinkItem item)
        {
            this.Mesh        = mesh;
            this.BackHandler = backHandler as GraphSceneDisplayMeshBackHandler <TSinkItem, TSourceItem, TSinkEdge, TSourceEdge>;
            this.SourceGraph = graph;
            this.SourceItem  = item;

            this.SourceDisplay = Mesh.Displays.FirstOrDefault(d => d.Data.Graph == SourceGraph);
            this.SourceScene   = Mesh.Scenes.FirstOrDefault(s => s.Graph == SourceGraph);
            this.BackGraph     = BackGraphOf(SourceGraph);
            this.BackItem      = BackItemOf(SourceGraph, item);
        }
Пример #2
0
        //IGraphSceneMeshBackHandler<TItem, TEdge> BackHandler (IGraph<TItem, TEdge> graph);
        //IGraphSceneMeshBackHandler<TItem, TEdge> BackHandler<TSourceItem, TSourceEdge> ();

        protected virtual IGraphSceneDisplayMeshBackHandler <TItem, TEdge> BackHandler(Type[] types)
        {
            if (types != null)
            {
                var key = Tuple.Create(types[1], types[3]);
                IGraphSceneDisplayMeshBackHandler <TItem, TEdge> backHandler = null;
                if (!_backHandlers.TryGetValue(key, out backHandler))
                {
                    backHandler = Activator.CreateInstance(typeof(GraphSceneDisplayMeshBackHandler <, , ,>).MakeGenericType(types)) as IGraphSceneDisplayMeshBackHandler <TItem, TEdge>;
                    _backHandlers.Add(key, backHandler);
                    backHandler.Scenes   = () => this.Scenes;
                    backHandler.Displays = () => this.Displays;
                }

                return(backHandler);
            }
            return(null);
        }