class MyClass <T> : T
{
   // 这里有好多代码
}这样编译告诉“T 是一个类型参数,无法从它进行派生”,但我就想这样用。因为基类说不好是什么类型,但至少是Control类型的派生类,也许是Container,或者是UserControl。但我又不想为每种基类都写一个派生类,这样要写好多重复的代码。不知该咋弄了,高手指教!
class MyClass1  : UserControl
{
   // 这里有好多代码
}class MyClass2 : Container
{
   // 这里有好多代码
}class MyClass_n : ...
{
   // 这里有好多代码
}大量代码都重复了,咋整?

解决方案 »

  1.   

    class MyClass <T> where T:Control
      

  2.   

    class MyClass <T> where T: Control 

      // 这里有好多代码 

      

  3.   

    但是,我要写Control的重载方法。    class MyClass<T> where T : Control
        {
            // 这好像不行也,说是没有找到适合的方法重写
            protected override void OnMouseDown(MouseEventArgs e)
            {
                base.OnMouseDown(e);
            }
        }