[英]Define a variable of different types
我想知道是否可以定義一個以上類型的變量/屬性。
假設我想要一個TextWebControl
屬性,它是一個WebControl
並且還實現了Web.UI.ITextControl
(例如TextBox或Label)。 但是我不想強制要求它是一個TextBox或Label,而只有一個繼承自WebControl並實現ITextControl的控件,以便它也可以與在.Net-Framework的將來版本中添加的控件一起使用。
編輯 :我已經重新標記了問題,並添加了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.