【问题标题】:How do I make a property of custom control to be a generic type?如何使自定义控件的属性成为泛型类型?
【发布时间】:2009-01-28 12:01:03
【问题描述】:

我创建了一个自定义 ASP.NET 控件(源自WebControls.TextBox)。

我想为该控件添加一个属性,该属性将是一个类型。

这个属性实际上总是某种类型的 enum 。 因此,当我在设计器中查看该控件的属性窗口时 - 我希望能够通过从特定枚举中进行选择来为该属性分配值。 所以我想在那里看到我传递的枚举中的枚举数列表..

示例(不是可以编译的实际代码……只是为了说明我的意思):

我有 2 个枚举:

enum MyEnumABC
{
    A,B,C
}

enum MyColor
{
    Red,Blue,Green
}

我有这个控制:

 public class MyTextBox<T> : TextBox
{
    public T Classification
    {
        get { }
        set { }
    }
}

现在我创建了一个具有以下控件的网页:

<Alex:MyTextBox runat=server id="alex" Classification=MyEnumABC.A></Alex:MyTextBox>
<Alex:MyTextBox runat=server id="alex2" Classification=MyColor.Red></Alex:MyTextBox>

问题是我在哪里可以将类型实际传递给该控件的构造函数? (因为页面类是调用控件构造函数的类。) 我实际上需要将 alex1 的类型设置为 MyEnumABC ,并将 alex2 的类型设置为 MyColor 。

第二个问题是我如何让 VS2008 在 HTML 设计器中支持这一点(这样当我在标签中键入分类时 - 它会打开写入枚举以选择值)和属性页控件。

我希望你明白我的意思。

谢谢。

【问题讨论】:

    标签: asp.net generics controls web-controls


    【解决方案1】:

    设计器将支持枚举属性,而无需您做任何特别的事情。只需在控件代码中指定属性,为其提供所有常用属性以使其显示在属性窗口中,并且属性窗口将自动在下拉列表中显示枚举值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-01
      • 1970-01-01
      • 2016-08-04
      • 1970-01-01
      • 2017-12-31
      相关资源
      最近更新 更多