非索引字段上的“默认类似”属性

时间:2014-05-07 18:35:09

标签: vb.net

我输入的数据包含表示日期的字符串。这些可能是日期字符串,如“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

有没有办法做到这一点?它有点像某种方式的默认属性,但没有索引,所以我认为在这种情况下你不能使用那种机制?

1 个答案:

答案 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