簡體   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