[英]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.