2014-01-24 60 views
0

在C#中,我開始使用屬性來定義我的類。我正在寫一個插件系統,其中的類需要一些元數據被識別爲插件。將屬性合併到一個屬性中或者分成更多屬性?

我不清楚Visual Studio Extensions是如何做到的,但我需要一個意見或設計規則,告訴我是否應該使用很多(可選)參數創建一個屬性,或者使用更少的參數來使用更多的屬性。

例如,該決定是關於這兩個不同的代碼段:

單個屬性,許多性能:

[Plugin("Image Tools", Author = "PacMani", Description = "blahblah", 
    Website = "http://blahblah.contoso.com/", Image = "Icon32x32.png")] 
public class ImagePlugin : Plugin 
{ 
    // ... 
} 

[Plugin("Image Tools", Author = "PacMani", Description = "blahblah")] 
[Website("http://blahblah.contoso.com/")] 
[Image("Icon32x32.png")] 
public class ImagePlugin : Plugin 
{ 
    // ... 
} 

或者甚至一個版本,其分離向上「作者「和」描述「合併爲一個屬性。

我的想法是不分裂按主題分組的屬性。但是這些團隊從哪裏開始和結束呢?以上屬性都是關於插件的「詳細信息」或「描述性信息」組。

+0

是否有任何邏輯與這些屬性連接,或者它們只是提供信息? –

+0

在上面的示例中,他們需要在IDE中顯示有關IDE中插件的信息(類似於VS信息對話框)。我可以想象稍後會添加更多屬性,例如「版本」,這可能不是可選的。 –

+0

如果每次使用它們時都會使用它們,那麼您應該使用單個屬性。 –

回答

0

在你的情況下,我會建議把所有這些信息性的數據作爲一個屬性。爲什麼?因爲:

  • 他們都與一個概念有關 - 插件
  • 他們只是信息

它很可能是不同的,如果有將與各財產中連接,然後將一些邏輯考慮分裂他們。

還有一種情況是您可能願意將它們拆分爲不同的屬性 - 以防您可以在邏輯上分離插件的類型。那麼你可以有一個只有基本屬性的基本PluginAttribute,然後例如從PluginAttribute繼承的ImagePluginAttribute屬性,並具有一些附加屬性等。 但我不會將它分成屬性(WebsiteAttribute,AuthorAttribute,VersionAttribute)的單獨屬性。

0

可能會誤解這個問題,但爲什麼不使用配置文件?似乎更適合於在這種情況下屬性不是? 您可以通過繼承來將這些類識別爲插件,並且這些屬性中的其餘元數據似乎只是元數據,應該將這些元數據定義爲類中的屬性或配置以方便訪問(如果它們在代碼之外更改 - 像網站的東西)。

+0

它們不應該在外面更改,它們只是將類描述爲已編譯。 –