Finding controls that use a certain interface in ASP.NET
<p>Having a heckuva time with this one, though I feel I'm missing something obvious. I have a control that inherits from System.Web.UI.WebControls.Button, and then implements an interface that I have set up. So think...</p>

<pre><code>public class Button : System.Web.UI.WebControls.Button, IMyButtonInterface { ... }
</code></pre>

<p>In the codebehind of a page, I'd like to find all instances of this button from the ASPX. Because I don't really know what the <em>type</em> is going to be, just the <em>interface</em> it implements, that's all I have to go on when looping through the control tree. Thing is, I've never had to determine if an object uses an interface versus just testing its type. <strong>How can I loop through the control tree and yank anything that implements IMyButtonInterface in a clean way</strong> (Linq would be fine)?</p>

<p>Again, know it's something obvious, but just now started using interfaces heavily and I can't seem to focus my Google results enough to figure it out :)</p>

<p><strong>Edit:</strong> GetType() returns the actual class, but doesn't return the interface, so I can't test on that (e.g., it'd return "MyNamespace.Button" instead of "IMyButtonInterface"). In trying to use "as" or "is" in a recursive function, the <em>type</em> parameter doesn't even get recognized within the function! It's rather bizarre. So</p>

<pre><code>if(ctrl.GetType() == typeToFind) //ok

if(ctrl is typeToFind) //typeToFind isn't recognized! eh?
</code></pre>

<p>Definitely scratching my head over this one.</p>
