visual studio designer可以显示继承泛型类型的类吗?

bsh*_*52s 5 c# visual-studio-designer

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

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

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

public class DoubleAttributeTextBoxBase : NumericAttributeTextBoxBase<double>

public class NumericAttributeTextBoxBase<T> : TextBox where T : IComparable, IComparable<T>
Run Code Online (Sandbox Code Playgroud)

Ric*_*key 9

要设计的类的基类必须是非抽象的且非泛型的.使一个继承自泛型类的类可设计.解决方法是在中间插入一个普通的非泛型类:

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

    // Now DoubleAttributeTextBoxBase is designable.
}

public class NumericAttributeTextBoxBaseOfDouble
    : NumericAttributeTextBoxBase<double>
{
}
Run Code Online (Sandbox Code Playgroud)

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