需要在Form中添加泛型<t>

时间:2017-05-07 00:17:16

标签: c# forms generics

我需要一个按钮来启动GetShortestPath()功能。不幸的是,该函数有一个通用的<T>并且需要拥有它,当我尝试在Forms1中声明泛型时,它会在InitializeComponent中出错:

  

InitializeComponent在当前上下文中不存在

是否有解决方法让该功能与<T>一起使用?

public partial class Form1<T>: Form
{
    public Form1()
    {
        InitializeComponent();
    }
    private void button1_Click(object sender, EventArgs e)
    {
        ICalculatePath calculatePath = new Model.CalculatePath<T>();
        calculatePath.GetShortestPath();
    }
}

谢谢

1 个答案:

答案 0 :(得分:0)

我相信这个问题正在发生,因为你正在制作这个类Generic,而不是由VS处理并由系统生成的自动生成的类。 InitializeComponent在另一个文件中定义。

更好的设计是将ICalculatePath传递到您的Form类中,无论是在自定义构造函数中还是作为属性。后者更好。即使使用事件并让父句处理它也许是一种更好的方法。如果不了解您的系统架构师和设计,就无法发表更多评论。