Vb.net 如何使几个相似的属性调用一个泛型属性

Vb.net 如何使几个相似的属性调用一个泛型属性,vb.net,properties,Vb.net,Properties,我想知道在VB.NET中是否可以让类似的属性调用一个泛型属性? 一个句子不能很好地解释它,所以这里有一个代码示例 我有一个如下定义的位字段: <Flags()> _ Enum E_Operation As Integer Upload = 1 Download = 2 Overwrite = 4 etc... End Enum 现在我有很多属性,我想通过调用一个具有要设置或获取的位号的泛型属性来简化它们(理想情况下只有一行) Public Prope

我想知道在VB.NET中是否可以让类似的属性调用一个泛型属性? 一个句子不能很好地解释它,所以这里有一个代码示例

我有一个如下定义的位字段:

<Flags()> _
Enum E_Operation As Integer
    Upload = 1
    Download = 2
    Overwrite = 4
    etc...
End Enum
现在我有很多属性,我想通过调用一个具有要设置或获取的位号的泛型属性来简化它们(理想情况下只有一行)

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

有没有办法在VB.NET中实现这一点

您可以将枚举设置为私有属性中的参数:

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

{offtopic}您确定其他问题的答案都不可接受吗?我是堆栈溢出新手,最近才发现这样做是一种很好的做法。如Bala R所述,请按解决您问题的答案旁边的勾号。请回顾您之前的问题(参见您的个人资料页面),并执行相同的操作。如果你不承认帮助你花费的时间,你会发现人们不愿意帮助你。感谢Hand-E-Food,这正是我在代码中所做的,但我想要的是一些“神奇”的语法,允许我将每个属性写在一行中(即调用通用属性进行位上载)。是的,我已经开始讨论我之前的问题了。我只想把它放在第一个问题上,也许称之为OperationFlagSet,而不必考虑命名属性。如果您曾经考虑迁移到C#,请不要这样做,因为它不能很好地支持索引属性。setter需要一个bug修复。@JBB:很高兴听到这个消息!我知道你现在在问什么,但不幸的是,属性不是这样工作的。您最好将
OperationFlag
设置为公共属性并调用它,而不是
IsUpload
等。
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