查找派生特定基类的所有用户控件,关于typeparam?

时间:2013-02-06 00:58:49

标签: asp.net c#-4.0 asp.net-webcontrol

我是所有用户控件的基类: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;
        }
    }
}

0 个答案:

没有答案