开发者

How to make several similar properties call one generic one

I'm wondering if it's possible in VB.NET to make similar properties call one generic one? A sentence doesn't explain it well so here's a code example.

I have a bit field defined like this:

<Flags()> _
Enum E_Operation As Integer
    Upload = 1
    Download = 2
    Overwrite = 4
    etc...
End Enum

Now my class has one property per bit in the bit field. Each property just returns the value or sets the corresponding flag. e.g.

Public Property IsUpload() As Boolean
Get
    Return ((Operation And E_Operation.Upload) = E_Op开发者_如何学Pythoneration.Upload)
End Get
Set(ByVal value As Boolean)
    SetBit(E_Operation.Upload, value)
End Set
End Property

Now I have quite a lot of properties and I would like to simplify them (ideally just one line) by calling a generic property with the bit number to Set or Get.

Public Property IsUpload() As Boolean
    GenericProperty(E_Operation.Upload)
End Property

Is there any way to achieve this in VB.NET?


You can make the enumeration a parameter in a private property:

Private Property OperationFlag(Flag As E_Operation) As Boolean 
    Get 
        Return ((Operation And Flag) = Flag) 
    End Get 
    Set(ByVal value As Boolean) 
        Operation = (Operation And Not Flag) Or (value And Flag)
    End Set 
End Property 

And make a public property wrapper:

Public Property IsUpload As Boolean
    Get
        Return OperationFlag(E_Operation.Upload)
    End Get
    Set(value As Boolean)
        OperationFlag(E_Operation.Upload) = value
    End Set
End Property
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜