繁体   English   中英

定义不同类型的变量

[英]Define a variable of different types

我想知道是否可以定义一个以上类型的变量/属性。

假设我想要一个TextWebControl属性,它是一个WebControl并且还实现了Web.UI.ITextControl (例如TextBox或Label)。 但是我不想强制要求它是一个TextBox或Label,而只有一个继承自WebControl并实现ITextControl的控件,以便它也可以与在.Net-Framework的将来版本中添加的控件一起使用。

  • .Net框架4.0

编辑 :我已经重新标记了问题,并添加了VB.Net,因为这是我的默认语言。 通常,对我来说,理解C#也没问题,但是我必须承认,没有经验就很难将通用的东西翻译成VB.Net,而且在C#中比在VB中有更好的记录。 因此,我将感激(并且接受)ITextControl / WebControl的VB.net泛型类型的工作示例。

根据马克的回答,我知道我需要一个通用类。 但是我如何在SomeClass实例化它? 这不会编译:

Class SomeClass
   Public Property info As InfoControl(Of WebControl, ITextControl)
End Class

Public Class InfoControl(Of T As {WebControl, ITextControl})
End Class

非常感谢你。

仅在泛型内部,即

void SomeMethod<T>(T whatever) where T : WebControl, ITextControl {...}

否则,您将不得不在它们之间进行选择,或者具有2个变量。

我会说要么定义某个接口的变量,要么使用您认为需要支持的所有类派生的最低基类。

这是具有多个约束的泛型类的VB版本:

Public Class SomeClass(Of T As {WebControl, ITextControl})
    Private _item As T
    Public Property Item() As T
        Get
            Return Me._item
        End Get
        Set(ByVal value As T)
            Me.ParseValue(value)
            Me._item = value
        End Set
    End Property
    Public Sub ParseValue(ByVal value As T)
        ''//do something with value here if you want
    End Sub
    Public Sub New(ByVal item As T)
        Me._item = item
    End Sub
End Class

并实例化它,您可以这样做:

    Dim L As New Label()
    Dim S1 As New SomeClass(Of Label)(L)

暂无
暂无

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

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