C # - definiendo hashset con clave personalizada

Estoy usando elHashSet yDictionary en C # para implementar una estructura gráfica. Tengo un problema con la singularidad deHashSet elementos cuando elHashSet La clave es una clase personalizada. Aquí tengo:

public class Point
{
    public int x { get; set; }
    public int y { get; set; }
}

public class Vertex
{
    public Vertex(Point point)
    {
        VertexLabel = point;
    }

    public Point VertexLabel { get; private set; }
}

public class Edge
{
    public Edge(Vertex to, Vertex from, double weight)
    {
        FromVertex = from;
        ToVertex = to;
        Weight = weight;
    }

    public Vertex FromVertex { get; private set; }
    public Vertex ToVertex { get; private set; }
    public double Weight { get; private set; }
}

public class Graph
{
    public Graph()
    {
        _Vertexes = new HashSet<Vertex>();
        _VertexEdgeMapping = new Dictionary<Vertex, LinkedList<Edge>>();
    }
    private HashSet<Vertex> _Vertexes;
    private Dictionary<Vertex, LinkedList<Edge>> _VertexEdgeMapping;
}

El problema es que cuando tengo los mismos vértices y quiero agregarlos al gráfico, se duplican. ¿Cómo puedo definir una forma en que elHashSet ¿Comprendería la singularidad de mis vértices?

Respuestas a la pregunta(3)

Su respuesta a la pregunta