我傾向於非常依賴泛型,但我擔心我濫用它們。我濫用C#泛型嗎?
例如,我有一個Entity
,其中包含Component
的子類字典,組件的類型是鍵,組件是值。實施例將是一個PositionComponent
,ColorComponent
等
我有用於分離和獲取部件的方法,定義爲這樣:
class Entity
{
Dictionary<Type, Component> components;
//...
void DetachComponent<T>()
where T : Component
{
components.Remove(typeof(T));
}
T GetComponent<T>()
where T : Component
{
return (T)components[typeof(T)];
}
}
我用被簡單地使功能辯論替代使用參數:void DetachComponent(Type componentType)
,但我不喜歡調用每種方法,如:entity.DetachComponent(typeof(ColorComponent));
這是濫用泛型?我通常爲容器類執行此操作,因爲使用鍵類型作爲鍵的鍵值對對我來說是有意義的。
這隻會允許每種類型的單個組件,不是 – 2014-09-05 16:26:39
@RowlandShaw不太確定你問的是什麼,我省略了添加組件的代碼,因爲它沒有在方法中使用泛型。 – Shane 2014-09-05 16:27:33
@Shane他只是指出,如果你註冊/取消每個類型的基礎上,那麼你不能有多個相同類型的實例(否則調用detach會隨機刪除一個,因爲你沒有任何關於「其中」你想刪除的類型之一,因爲你只能通過類型)。我很確定這對你沒問題,但我認爲這是他的問題 – 2014-09-05 16:29:04