Как сделать так, чтобы несколько похожих свойств вызывали одно универсальное - PullRequest
2 голосов
/ 15 сентября 2011

Мне интересно, возможно ли в VB.NET заставить подобные свойства вызывать одно универсальное свойство?Предложение плохо объясняет это, поэтому вот пример кода.

У меня есть битовое поле, определенное так:

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

Теперь у моего класса есть одно свойство на бит в битовом поле,Каждое свойство просто возвращает значение или устанавливает соответствующий флаг.Например,

Public Property IsUpload() As Boolean
Get
    Return ((Operation And E_Operation.Upload) = E_Operation.Upload)
End Get
Set(ByVal value As Boolean)
    SetBit(E_Operation.Upload, value)
End Set
End Property

Теперь у меня довольно много свойств, и я хотел бы упростить их (в идеале всего одну строку), вызвав универсальное свойство с битовым номером для Set или Get.

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

Есть ли способ добиться этого в VB.NET?

1 Ответ

2 голосов
/ 15 сентября 2011

Вы можете сделать перечисление параметром в частной собственности:

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 

И сделать обертку публичной собственности:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...