声明BindingSource.DataSource为通用

时间:2018-03-23 22:35:32

标签: c# winforms generics user-controls windows-forms-designer

我正在尝试将bindingSource声明为控件通用

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

但是在设计师中这就是问题所在:

  

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

But in the designer this is the problem

1 个答案:

答案 0 :(得分:3)

要防止设计器错误,请在构造函数中设置绑定源的数据源。

当你在控件设计器的构造函数中放入一段代码时,反序列化器不会尝试解析它。它也不会在你的控件的设计时间内运行,而在运行时和派生控件中,它也会运行。

以下是防止错误的必要条件:

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

有关设计师工作原理的更多信息,请查看以下文章,特别是看一下包含几个错误但展示设计师的示例: