3
我需要制作一个程序,使用几种算法来创建随机迷宫。 我已经定义了以下类:(它是数据类型算法将使用,T是在特定实现中使用的类型,例如,如果我使用2D矩阵来表示迷宫,T将是2D点)C#泛型在接口中,编写泛型算法
class Entry<T>
{
private T elem; //the data saved in each entry
public T Elem
{
get { return elem; }
set { this.elem = value; }
}
public Entry(T elem)
{
Elem = elem;
}
public override int GetHashCode()
{
return Elem.GetHashCode();
}
}
与以下接口:
interface IRandomGeneretableMaze<T>
{
void SetRandomEntrance();
void SetRandomExit();
List<Entry<T>> GetNextPossibleEntries(Entry<T> entry);
void MakePath(Entry<T> entry1, Entry<T> entry2);
void RemovePath(Entry<T> entry1, Entry<T> entry2);
}
它定义了一种行为随机generatble迷宫必须提供。
interface IMaze<T>
{
Entry<T> GetEntrance();
Entry<T> GetExit();
List<Entry<T>> GetNextMoves(Entry<T> entry);
}
它定义了一些迷宫工作的一般方法。 (迷宫正在以几种不同的方式来实现)
interface IRandomMazeGenerator<T>
{
IMaze<T> Generate(Type t);
}
它定义只是一个迷宫发生器,每个算法将被不同地实现,而t是刚要创建的迷宫的类型。 (对于Matrix基础实现可能是1,对于基于图形的实现可能是2等等)。假设我做了以下类:
class MatrixMaze : IMaze<Point2D>, IRandomGeneratable<Point2D> {...}
class GraphMaze : IMaze<Node>, IRandomGeneratable<Node> {...}
我的问题是,当我尝试实施的方法产生,编译器问我具体的T,而算法不(也不应该)依赖于T,我不想写相同的算法,只适用于不同的T。有没有办法编写单独的代码,这将独立于T的工作?
你可以添加代码中的错误是什么? – Kalten