我正在用C#编写图形库。
这是我的Graph.cs:
public class Graph : IGraph
{
public HashSet<INode> Nodes { get; set; }
public HashSet<IEdge> Edges { get; set; }
}
如何获得这种行为?
现在,库用户只需使用:
g.Edges.Add(new Edge(n5, n6));
n5和n6为Node
实例,但g.Nodes HashSet中没有n5和n6。
我想知道是否有一种方法可以在将Edge实例添加到Edge的Setter属性中的HashSet 中时调用这样的方法:
void UpdateNodes(IEdge edge)
{
Nodes.Add(edge.A_Node);
Nodes.Add(edge.Another_Node);
}
答案 0 :(得分:2)
我不会直接暴露HashSet集合。
public class Graph : IGraph
{
private HashSet<INode> _nodes = new HashSet<INode>();
private HashSet<IEdge> _edges = new HashSet<IEdge>();
public IEnumerable<INode> Nodes => _nodes;
public IEnumerable<IEdge> Edges => _edges;
public void AddNode(INode node) => _nodes.Add(node); //Here you can extend with your own custom code.
public void AddEdge(IEdge edge) => _edges.Add(edge);
//Here you add other functions such as perhaps "Remove".
}