我试图在控件通用中将bindingSource声明为通用

public partial class ABMControl<T> : UserControl
{
    public ABMControl()
    {
        InitializeComponent();
    }
}
partial class ABMControl<T>
{
    ...
    private void InitializeComponent()
    {
        ...
        this.bindingSource.DataSource = typeof(T)
        ...
    }
    ...
}


但是在设计器中这是个问题:


  无法解析方法“ InitializeComponent”。解析器报告了
  以下错误'不支持类型参数参数名称:
  typeSymbol”。请在任务列表中查找潜在的错误。

最佳答案

为了防止设计人员出错,请在构造函数中设置绑定源的数据源。

当您在控件的构造函数中放置一段代码时,反序列化器将不会尝试解析它。它也不会在控件的设计时运行,而在运行时以及派生控件中,它将运行。

这是您必须采取的预防错误措施:

public partial class ABMControl<T> : UserControl
{
    public ABMControl()
    {
        InitializeComponent();
        this.bindingSource.DataSource = typeof(T)
    }
}


有关设计师如何工作的更多信息,请参见以下文章,特别是看看该示例,其中包含一些错误,但显示了设计师:


Can't view designer when coding a form in C#

07-26 09:36