1
我正在使用對象樹的遞歸函數。也就是說,我的對象集合是這樣的:動態派生類型參數
Object1
--Object2
----Object3
------Object4
所有對象從基本對象(抽象類),其中有一個validate()方法繼承,其收集來自ITreeCollection繼承。我已經寫了一個遞歸函數來執行:
private bool Validate<T>(ITreeCollection items) where T : TreeNodeBase
{
foreach (var itm in items as Collection<T>)
{
if (((TreeNodeBase)itm).Items != null)
{
return Validate<T>(((TreeNodeBase)itm).Items);
}
else return true;
}
return true;
}
我如何可以推導出類型參數T的內部函數(即return Validate<T>(((TreeNodeBase)itm).Items)
)
邊注:避免'as'投,如果情況下,你不立即檢查空當你轉換一個完全理解的轉換異常成空裁判例外,經常在代碼網站unrelate d演員。 –
另一方面說明:在驗證項目列表中的第一個項目之後,您的循環會返回。我想如果'Validate'返回false,那麼你只想返回,以便剩下的項目得到驗證。就目前而言,你會在第一片葉子上得到結果。 –
看起來你不需要任何泛型:用'TreeNodeBase'替換'T',事情就會起作用。 – dasblinkenlight