2014-01-13 55 views
0

我開始瞭解自定義屬性和我有更多的經驗的用戶一個問題狀態或兩個屬性:使用一個屬性與無狀態

我想記住我的屬性爲「類型A」或「的TypeB 「具有屬性,所以我可以用反射來檢查它們。它是更好地只有一個有狀態屬性,像這樣:

Public Class FlavourAttribute 
Inherits Attribute 

Private _flavour As Flavours 

Public ReadOnly Property Flavour() As Flavours 
    Get 
     Return _flavour 
    End Get 
End Property 

Public Enum Flavours 
    Sweet = 0 
    Acid = 1 
End Enum 

Public Sub New(ByVal flavour As Flavours) 
    _flavour = flavour 
End Sub 

末級

或者是它更好地使用兩個屬性,而不狀態:

Public Class SweetAttribute 
    Inherits Attribute 
End Class 

Public Class AcidAttribute 
    Inherits Attribute 
End Class 

我想諮詢一下這兩種方法的缺陷或可能的替代方案。

謝謝!

回答

1

這裏沒有解答您一般的問題,但答案您具體的問題是使用後者。不管它是否是酸性的,不管它是否甜美,所以你都在談論不同的事情。另一方面,如果您正在處理相關(或相互排斥)的屬性,它們應該屬於一個屬性。

0

經過一段時間的自定義屬性玩,我會說我發現了一個很好的理由,喜歡單個屬性與狀態的單個屬性:它是更簡單和可讀性來檢查,如果一個屬性有一個屬性比檢查屬性的屬性。

在這個問題在下例中,有獨立的屬性,我們將有:

For Each prop As PropertyInfo In MyTipe.GetProperties 
    thePropertyIsSweet= Attribute.IsDefined(prop , GetType(SweetAttribute)) 
    thePropertyIsAcid= Attribute.IsDefined(prop , GetType(AcidAttribute)) 
Next 

雖然與狀態的單一屬性我應該先檢查是否在酒店,然後由澆鑄屬性對象它並檢索它的兩個屬性。

我是這個推理的錯?

相關問題