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