1

我有一个所有用户控件的基类:SiteUserControlBase. 它还需要一个类型参数:SiteUserControlBase<T>. 如何最好地在页面上找到源自SiteUserControlBasetypeparam 的所有控件?

我使用下面的扩展方法来查找 type 的所有控件SiteUserControlBase,但它将排除所有也使用 type 参数的控件。

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;
        }
    }
}
4

0 回答 0