/// <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); }