繁体   English   中英

Visual Studio设计师可以显示继承通用类型的类吗?

[英]Can visual studio designer show classes inheriting generic types?

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

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

这些类都在同一程序集中定义,因此我知道这不是参考问题。 我想知道它是否与基类是泛型有关。 有任何想法吗?

public class DoubleAttributeTextBoxBase : NumericAttributeTextBoxBase<double>

public class NumericAttributeTextBoxBase<T> : TextBox where T : IComparable, IComparable<T>

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

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

    // Now DoubleAttributeTextBoxBase is designable.
}

public class NumericAttributeTextBoxBaseOfDouble
    : NumericAttributeTextBoxBase<double>
{
}

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

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

来自msdn:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM