我如何在我的基础 class 中使用泛型类型?

How do i use generic type in my base class?

我有一个 class 结构,其基础抽象 class 具有派生的 classes。

我的基地class是这样的:

public abstract class Graph
{
    public Dictionary<Vector3, int> Dictionary { private set; get; }
    public List<T> List { set; get; }

    public Graph()
    {
         Dictionary = new Dictionary<Vector3,int>();
    }
}

然后我有 2 个派生的 classes:

public class Graph_Waypoints : Graph
{
    public Graph_Waypoints() : base ()
    {
         List = new List<Waypoint>();
    }
}
public class Graph_Tiles : Graph
{
    public Graph_Tiles() : base ()
    {
         List = new List<Tile>();
    }
}

但我似乎不能像这样为我的图表做灵活的类型。这里的想法是创建一个图表,让我可以为其节点使用不同的对象。无论是路点图还是基于图块的图。

但我正在努力研究如何获得它的灵活性,以允许我在创建每个新图形时更改类型。

我走的方向对吗?我怎样才能在我的列表中获得类型灵活性?

你快到了;你只是遗漏了一些关键部分:

public abstract class Graph<T> // <-- Graph must be generic
{
    public Dictionary<Vector3, int> Dictionary { private set; get; }
    public List<T> List { set; get; }

    public Graph()
    {
        Dictionary = new Dictionary<Vector3, int>();
        // You could initialize the list as you did before, but it's cleaner to do it here
        List = new List<T>();
    }
}

public class Graph_Waypoints : Graph<Waypoint> // <-- Subclasses must provide the base class generic arguments
{
    public Graph_Waypoints() : base()
    {
    }
}
public class Graph_Tiles : Graph<Tile>
{
    public Graph_Tiles() : base()
    {
    }
}

另请注意,在实现无参数构造函数时不需要显式编写 : base();编译器为您完成