我寫這個方法:這是泛型錯誤使用的例子嗎?
public IGamePlugin[,] GetTable<T>()
{
Type t = typeof(T);
if (t is IFixedElement)
{
return fixedElements;
}
else if (t is IFixedTile)
{
return fixedTiles;
}
else
{
throw new NotSupportedException("Type:" + t.ToString() + " is not supported");
}
}
而且我不是很確定,如果它不是泛型錯誤使用。我比使用一個簡單的參數(字符串或可能是類型)更好,因爲語法在調用端清晰。
您認爲如何?
爲什麼使用參數不好? – 2010-07-25 19:37:51
使用參數可以是一個很好的解決方案,它取決於具體情況。 – MrFox 2010-07-25 19:38:09
因爲一個功能應該有一個責任。這裏函數根據泛型來做兩個完全不同的事情,路徑之間沒有任何共享代碼,甚至在概念上也是如此,因此它們屬於不同的函數。使用參數而不是泛型類型不能解決違反單一責任原則的問題。 – 2010-07-25 19:41:47