By the way, a couple of examples of how to work around the lack of
inheritance in an interface:
* Use an abstract class instead. An abstract class can inherit
some other class, providing you the inheritance required to make your
* Define a "ToClass()" method or "Class" property in the interface.
Implementors would be required to implement the necessary behavior to
convert the interface instance to something appropriate (for example,
simply cast the interface implementor instance to the necessary class).
You wouldn't get compile-time type safety though.
Finally, if for some reason you don't really want the interface to
require the implementor to inherit from the necessary class
(Web.UI.Control in this case), but you believe that at that point in
code you have good reason to believe that the implementor does in fact
inherit from the necessary class, you can simply cast the interface
reference to the necessary class. As long as the instance actually is
of the appropriate type, it should work.