如何实现一个通用的OpenForm方法来允许任何类型的Form

gee*_*eek 3 c# generics

我有这个代码FormMain : Form 如何实现OpenForm方法,允许我打开任何类型的Form

    // the method in question
    void OpenFrom<T>()
    {
        // How to implement this generic method to get rid of OpenForm1() and OpenForm2() ???
    }

    // Open Form1 instance
    void OpenForm1()
    {
        new Form1().Show();
    }

    // Open Form2 instance
    void OpenForm2()
    {
        new Form2().Show();
    }

    OpenForm<Form1>(); // instead of OpenForm1()
    OpenForm<Form2>(); // instead of OpenForm2()
Run Code Online (Sandbox Code Playgroud)

Sri*_*vel 9

这是你的方式

 void OpenFrom<T>() where T : Form, new()
 {
     new T().Show();
 }
Run Code Online (Sandbox Code Playgroud)

  • 虽然这个答案在技术上回答了这个问题,但我觉得在这种情况下使用泛型只是一个糟糕的补丁来解决这个问题. (4认同)