示例#1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="graphType"></param>
        /// <param name="vertexProviderType"></param>
        /// <param name="edgeProviderType"></param>
        /// <param name="directed"></param>
        /// <param name="allowParallelEdges"></param>
        /// <returns></returns>
        private ISerializableVertexAndEdgeListGraph CreateGraph(
            Type graphType,
            Type vertexProviderType,
            Type edgeProviderType,
            GraphEdgeDefaultType directed,
            bool allowParallelEdges
            )
        {
            // create providers
            IVertexProvider vp =
                (IVertexProvider)vertexProviderType.GetConstructor(Type.EmptyTypes).Invoke(null);
            IEdgeProvider ep =
                (IEdgeProvider)edgeProviderType.GetConstructor(Type.EmptyTypes).Invoke(null);

            // create graph
            Type[] gts = new Type[3];
            gts[0] = typeof(IVertexProvider);
            gts[1] = typeof(IEdgeProvider);
            gts[2] = typeof(bool);

            Object[] gps = new Object[3];
            gps[0] = vp;
            gps[1] = ep;
            gps[2] = allowParallelEdges;

            return((ISerializableVertexAndEdgeListGraph)graphType.GetConstructor(gts).Invoke(gps));
        }
		/// <summary>
		/// 
		/// </summary>
		/// <param name="graphType"></param>
		/// <param name="vertexProviderType"></param>
		/// <param name="edgeProviderType"></param>
		/// <param name="directed"></param>
		/// <param name="allowParallelEdges"></param>
		/// <returns></returns>
		private ISerializableVertexAndEdgeListGraph CreateGraph(
			Type graphType, 
			Type vertexProviderType, 
			Type edgeProviderType,
			GraphEdgeDefaultType directed,
			bool allowParallelEdges
			)
		{
			// create providers
			IVertexProvider vp = 
				(IVertexProvider)vertexProviderType.GetConstructor(Type.EmptyTypes).Invoke(null);
			IEdgeProvider ep = 
				(IEdgeProvider)edgeProviderType.GetConstructor(Type.EmptyTypes).Invoke(null);

			// create graph
			Type[] gts = new Type[3];
			gts[0]=typeof(IVertexProvider);
			gts[1]=typeof(IEdgeProvider);
			gts[2]=typeof(bool);

			Object[] gps = new Object[3];
			gps[0]=vp;
			gps[1]=ep;
			gps[2]=allowParallelEdges;

			return (ISerializableVertexAndEdgeListGraph)graphType.GetConstructor(gts).Invoke(gps); 
		}