如何将自定义双向图从 QuickGraph 应用于 Graph# 的 GraphLayout?
怎么了?
using QuickGraph;
using GraphSharp;
public class State
{
public string Name { get; set; }
public override string ToString()
{
return Name;
}
}
public class Event
{
public string Name;
public override string ToString()
{
return Name;
}
}
BidirectionalGraph<State, TaggedEdge<State, Event>> x =
new BidirectionalGraph<State, TaggedEdge<State, Event>>();
GraphLayout graphLayout = new GraphLayout();
graphLayout.Graph = x;
错误:
无法将类型 QuickGraph.Bi DirectionGraph
隐式转换为 QuickGraph.IBi DirectionGraph
。存在显式转换(您是否缺少强制转换?)
如果我进行强制转换,则应用程序在启动时会出现错误错误,而没有任何信息
出了什么问题?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您需要使用 IEdge 类型而不是 TaggedEdge 创建 BidirectionGraph 实例:
我不能说我完全理解为什么会出现这种情况,但是上面的方法应该可行。
编辑:我问了一个问题解释了为什么这个演员阵容不起作用。
You need to create your instance of BidirectionGraph using the type IEdge instead of TaggedEdge:
I can't say that I fully understand why this is the case, however the above should work.
EDIT: I asked a question that kind of explains why this cast doesn't work.
如果您使用自定义图表(IE 不是“
Bi DirectionGraph
”)您需要使用继承自“
ContextualGraphLayout
”的自定义 GraphLayout此处,不要使用“
GraphLayout
”,而是使用“ContextualGraphLayout” >,双向图<状态,边缘<状态>>>
”。我强烈建议创建虚拟模型类以获得可读性。
例如:
If you use a custom graph (IE not a "
BidirectionalGraph<Object, IEdge<Object>
")You need to use a custom GraphLayout that inherits from "
ContextualGraphLayout
"Here, instead of using "
GraphLayout
" use "ContextualGraphLayout<State,Edge<<State>>,BidirectionalGraph<State, Edge<State>>>
".I strongly advise to create dummy model classes to gain readability.
For instance:
是的
,但 TaggedEdge 不实现 IEdge 接口
如何使用自定义TaggedEdge?
Yes
But TaggedEdge does not implement IEdge interface
How to use custom TaggedEdge?