visual studio designer可以显示inheritancegenerics类型的类吗?

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

无法为此文件显示设计器,因为其中的任何类都无法设计。 设计者检查了文件中的以下类:DoubleAttributeTextBoxBase —无法加载基类’NumericAttributeTextBoxBase’。 确保已引用程序集并且已构建所有项目。

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

public class DoubleAttributeTextBoxBase : NumericAttributeTextBoxBase public class NumericAttributeTextBoxBase : TextBox where T : IComparable, IComparable 

要设计的类的基类必须是非抽象的且非generics的。 使一个inheritance自generics类的类可设计。 解决方法是在中间插入一个简单的非generics类:

 public partial class DoubleAttributeTextBoxBase : NumericAttributeTextBoxBaseOfDouble { public DoubleAttributeTextBoxBase() { InitializeComponent(); } // Now DoubleAttributeTextBoxBase is designable. } public class NumericAttributeTextBoxBaseOfDouble : NumericAttributeTextBoxBase { } 

为了使其尽可能简单,您甚至可以将非generics类放在与要设计的类相同的文件中。 只需确保将它放在课后(正如我上面所做的那样),因为设计者希望文件中的第一个类是正在设计的类。

我不知道一个解决方案,自从C#2.0问世以来,这一直是Visual Studio的一个严重限制。 我唯一可以说的是在运行时将该控件添加到页面,然后至少你可以让你的设计师回到其他一切。

来自msdn:

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

http://msdn.microsoft.com/en-us/library/ms171843.aspx