在基類中爲所有後代和基類本身聲明瞭一個靜態類成員的單個實例。因此,基類中的單個頂點列表將不會執行。有什麼可以做: - 在基類中聲明
private static Dictionary<string, List<vertex>> PointsPerClass =
new Dictionary<string, List<vertex>>();
你沒有說的後代如何指定它們的頂點,但讓我們說有一個虛基類的方法,通過所有後代覆蓋:
protected virtual FillStaticVertices(List<vertex> aVertices)
{
}
然後基類有公共方法:
public GameObject CreateObject()
{
string key = GetType().FullName;
List<vertex> points = null;
if (PointsPerClass.ContainsKey(key))
points = PointsPerClass[key];
else {
points = new List<vertex>();
PointsPerClass.Add(key, points);
FillStaticVertices(points);
}
// CreateObjectFromPoints is an abstract method implemented by descendants
GameObject gameObj = CreateObjectFromPoints(points);
// apply textures, rotations, etc
return gameObj;
}
我會使GameObject成爲一個接口或基類嗎?多態性是否與接口一起工作?那看起來怎麼樣? 另外,如果我把這個列表放在界面中,它不會爲每個實例化對象創建一個頂點列表嗎?我正在嘗試爲所有類似的對象實例使用1個多邊形列表,然後只爲特定實例提供單獨的轉換信息。 –
GameObject將是一個接口。多態性在C#中只與*接口(最多一個類)一起工作。 –
我得到「修飾符'靜態'對這個項目無效'。不編譯 – weberc2