在c#中循环泛型类型

AnZ*_*eky 13 c# generics

我需要制作图形,我希望边缘和顶点是通用类型

public interface IVertex<TVertex, TEdge>
        where TVertex : IVertex<?>
        where TEdge : IEdge<?>
{
    bool AddEdge(TEdge e);
    TEdge FindEdge(TVertex v);
}

public interface IEdge<TVertex> where TVertex : IVertex<?>
{
    TVertex From { get; }
}
Run Code Online (Sandbox Code Playgroud)

但是,边缘需要顶点类型,顶点需要边缘类型我该怎么办?

Den*_*s_E 6

我认为你要让它变得更加复杂.
会这样的吗?

public interface IVertex<T>
{
    bool AddEdge(IEdge<T> e);
    IEdge<T> FindEdge(IVertex<T> v);
}

public interface IEdge<T>
{
    IVertex<T> From { get; }
}
Run Code Online (Sandbox Code Playgroud)