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