将 Microsoft.NET 提供的属性用于替代用途是否合适,或者我应该创建自己的属性?
例如,我经常看到人们使用DescriptionAttribute
for 枚举作为“友好名称”。不过,我的理解是,DescriptionAttribute
出于这个原因,它是供 IDE 使用的。
另一个例子是使用DefaultAttribute
to,通过反射,在构造过程中设置属性的所有默认值。
那么,在最佳实践中以通常不打算使用的方式重用属性是否可以接受?
将 Microsoft.NET 提供的属性用于替代用途是否合适,或者我应该创建自己的属性?
例如,我经常看到人们使用DescriptionAttribute
for 枚举作为“友好名称”。不过,我的理解是,DescriptionAttribute
出于这个原因,它是供 IDE 使用的。
另一个例子是使用DefaultAttribute
to,通过反射,在构造过程中设置属性的所有默认值。
那么,在最佳实践中以通常不打算使用的方式重用属性是否可以接受?
就个人而言,我不重用属性。我创建自己的自定义。
这可以防止我使用属性,然后在将来有人以我没有预料到的方式使用我的类时出现意外行为。
DefaultAttribute 和 DescriptionAttribute 由“propertygrid”控件使用,该控件是 Visual Studio 设计器中使用的控件。也可以在自己的代码中使用这个控件,然后使用这些属性才有意义
使用 MS 提供的定义,并在它们不符合官方定义时创建您自己的定义。创建自己的代码可能听起来很傻(并不是说创建一个新代码真的很长),但是如果有人来阅读您的代码并且没有阅读标题为“我们对官方属性的替代用途”的 20 页手册,他将所有人都对发生的事情感到困惑。
此外,许多 .NET 类检查这些属性。如果您滥用它们,最终可能会出现非常奇怪的行为。
微软自己发布的最佳实践在这个主题上没有什么可说的,DescriptionAttribute MSDN Page上的代码用法清楚地表明了这个内置属性在某些其他方面的使用。我通常认为为仅与您的项目相关的事物添加额外的含义是非常危险的。这被称为“部落知识”,是与他人合作时产生误解的主要方式之一。
如果您有一个 .NET 框架涵盖的用例,那太棒了——您绝对应该首先使用现有的。但是,如果您不确定,最好简单地创建您自己的。