私はすべてのユーザー コントロールの基本クラスを持っています: SiteUserControlBase
. typeparam: も必要ですSiteUserControlBase<T>
。SiteUserControlBase
typeparam の考慮から派生したページ上のすべてのコントロールを見つけるにはどうすればよいですか?
以下の拡張メソッドを使用して type のすべてのコントロールを検索しますがSiteUserControlBase
、type param も使用するすべてのコントロールを除外します。
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;
}
}
}