這裏是我的代碼轉換通用變量,以特定的類類型
public class MaterialRepository<T> where T : Material, new()
{
public List<T> ListMaterial { get; set; }
public MaterialRepository(List<T> listMaterial)
{
ListMaterial = new List<T>();
ListMaterial = listMaterial;
}
public T SearchMaterial(T inputMaterial)
{
T resultMaterial = new T();
if (typeof(T) == typeof(BendingMaterial))
{
//do something here
}
return resultMaterial;
}
我的問題是如何轉換resultMaterial到一個特定的派生類材料(BendingMaterial)? 也在//在這裏做點什麼..部分,如何ListMaterials是通用的,如何在ListMaterials中使用BendingMaterial特定屬性找到BendingMaterial?
這也是可能的,但我必須重新編寫我的其他方法,有沒有辦法可以resultMaterial轉化爲具體的?什麼樣T resultMaterial =新BendingMaterial()? – Blues 2014-09-11 03:55:01
好,如果你的意圖是將resultMaterial變量當作BendingMaterial來對待,假設你已經完成了一次類型檢查,並且你知道你不會得到一個運行時錯誤來試圖進行這種轉換,那麼你可以做BendingMaterial b =(runtimeMaterial作爲BendingMaterial);然後訪問彎曲的屬性和方法材料。 T resultMaterial = new BendingMaterial()會編譯,但可能不會在每種情況下都做到這一點。它讓你遠離泛型,但你也可以考慮Material m = new BendingMaterial();因爲你知道你有一個材料列表。 – 2014-09-11 04:28:30
管理修復它我改變了返回類型爲材質而不是T,'材料m = new BendingMaterial();'做了竅門,感謝您的幫助! – Blues 2014-09-11 04:40:53