我是所有用户控件的基类:SiteUserControlBase
。它还需要一个类型参数:SiteUserControlBase<T>
。如何最好地找到页面上从SiteUserControlBase
得到的关于typeparam的所有控件?
我使用下面的扩展方法查找SiteUserControlBase
类型的所有控件,但它将排除所有也使用类型参数的控件。
public static IEnumerable<T> FindControlsOfType<T>(this ControlCollection Controls)
where T : class
{
T control;
foreach (Control ctrl in Controls)
{
if ((control = ctrl as T) != null)
{
yield return control;
}
foreach (T child in FindControlsOfType<T>(ctrl.Controls))
{
yield return child;
}
}
}