C# visual studio designer能否显示继承泛型类型的类?

C# visual studio designer能否显示继承泛型类型的类?,c#,visual-studio-designer,C#,Visual Studio Designer,我正在尝试清除解决方案中的所有设计器错误,并遇到以下错误: 无法为此文件显示设计器,因为无法设计其中的任何类。设计器检查了文件中的以下类:DoubleAttributeTextBoxBase--无法加载基类“NumericattTributeTextBoxBase”。确保部件已被引用,并且已生成所有项目 这些类都是在同一个程序集中定义的,所以我知道这不是一个引用问题。我想知道它是否与基类是泛型的这一事实有关。有什么想法吗 public class DoubleAttributeTextBoxBa

我正在尝试清除解决方案中的所有设计器错误,并遇到以下错误:

无法为此文件显示设计器,因为无法设计其中的任何类。设计器检查了文件中的以下类:DoubleAttributeTextBoxBase--无法加载基类“NumericattTributeTextBoxBase”。确保部件已被引用,并且已生成所有项目

这些类都是在同一个程序集中定义的,所以我知道这不是一个引用问题。我想知道它是否与基类是泛型的这一事实有关。有什么想法吗

public class DoubleAttributeTextBoxBase : NumericAttributeTextBoxBase<double>

public class NumericAttributeTextBoxBase<T> : TextBox where T : IComparable, IComparable<T>
公共类DoubleAttributeTextBoxBase:NumericAttributeTextBoxBase
公共类NumericAttributeTextBoxBase:TextBox,其中T:IComparable,IComparable

我不知道有什么解决方案,自从C#2.0问世以来,这一直是Visual studio的一个严重限制。我唯一能说的就是在运行时将该控件添加到页面中,然后至少可以让您的设计器返回其他所有内容

从msdn:

组件或控件不能是泛型类型,也称为模板类型或参数化类型。设计环境不支持泛型类型


所设计类的基类必须是非抽象和非泛型的。使从泛型类继承的类可设计。解决方法是在以下两者之间插入一个普通的非泛型类:

public partial class DoubleAttributeTextBoxBase
    : NumericAttributeTextBoxBaseOfDouble
{
    public DoubleAttributeTextBoxBase()
    {
        InitializeComponent();
    }

    // Now DoubleAttributeTextBoxBase is designable.
}

public class NumericAttributeTextBoxBaseOfDouble
    : NumericAttributeTextBoxBase<double>
{
}
公共部分类DoubleAttributeTextBoxBase
:NumericAttributeTextBoxBaseOfDouble
{
public DoubleAttributeTextBoxBase()
{
初始化组件();
}
//现在,DoubleAttributeTextBoxBase是可设计的。
}
公共类numerictTributeTextBoxBaseofDouble
:NumericAttributeTextBoxBase
{
}

为了尽可能简单,您甚至可以将非泛型类与要设计的类放在同一个文件中。只需确保将其放在类之后(正如我在上面所做的),因为设计器希望文件中的第一个类就是正在设计的类。

我知道这可能看起来很愚蠢,但您是否检查过以确保它们位于同一名称空间中?应用程序可以编译吗?非泛型基类需要无参数构造函数,没有它我就无法工作。在引入构造函数后需要重新构建。