我输入的数据包含表示日期的字符串。这些可能是日期字符串,如“2000-01-01”,但他们可能会说“5Y”,意思是“五年”。所以我有一个小班来跟踪这些......
Public Class FlexDate
Friend Input As String = ""
Friend Value As DateTime = EarliestDate
...
您可能会在Rent对象中找到其中一个FlexDates,例如“myRent.StartDate”。 “问题”是我希望将Value作为字段名称进行访问。例如......
myRent.StartDate.Input - returns a string
myRent.StartDate.Value - returns a DateTime
那么......
myRent.StartDate - myRent.StartDate.Value
有没有办法做到这一点?它有点像某种方式的默认属性,但没有索引,所以我认为在这种情况下你不能使用那种机制?
答案 0 :(得分:1)
您可以使用DefaultMemberAttribute
指定默认属性:
<System.Reflection.DefaultMember("Value")> _
Public Class FlexDate
'...
End Class
但是这对VB没有帮助,因为你无法访问它。它只是模棱两可 - 你的意思是对象或它的属性。
但您可以实现隐式转换:
Class FlexDate
'...
Public Shared Widening Operator CType(this As FlexDate) As DateTime
Return this.Value
End Operator
End Class
Dim date As New FlexDate
Dim value As DateTime = date 'Works with the implicit operator