2014-01-24 61 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

它们不应该在外面更改,它们只是将类描述为已编译。 –