财产可以选择吗?

时间:2018-03-07 06:31:45

标签: vb.net properties

我有一个小班:

Public Class LimitOrder
    <JsonProperty(PropertyName:="size")> _
    Public Property Size() As Double

    <JsonProperty(PropertyName:="price")> _
    Public Property Price() As Double

    <JsonProperty(PropertyName:="persistenceType")> _
    Public Property PersistenceType() As PersistenceType

    <JsonProperty(PropertyName:="betTargetType")>
    Public Property BetTargetType() As BetTargetType

    <JsonProperty(PropertyName:="betTargetSize")>
    Public Property BetTargetSize() As Double

End Class

我的问题是如果给BetTargetType一个值,那么不能将Size属性传递给处理器。

每次初始化类时,都会包含Size属性,并且值为0.0
如果我注释掉(或省略)Size属性它可以正常工作,但是有些情况下我想要包含大小。

理想情况下,我希望Size属性是可选的,或者两种类型的类,一个具有Size属性,另一个不具有。

我尝试将Size属性设为可为空 - 但该值是在序列化之前创建的。

1 个答案:

答案 0 :(得分:0)

以下内容应该有效:

Private _Size As Double?

<JsonProperty(PropertyName:="size")>
Public Property Size() As Double?
    Get
        If BetTargetType IsNot Nothing Then
            Return Nothing
        Else
            Return _Size
        End If
    End Get
    Set(value As Double?)
        _Size = value
    End Set
End Property

如果Size不是Nothing,则BetTargetType会返回Nothing