【发布时间】:2010-08-23 23:27:18
【问题描述】:
当我在类库中创建实体时,我倾向于添加一个Tag 属性,用户可以使用它并扩展库以随对象存储任意数据。现在我正在寻找在我的类库中实现这种Tag 属性的最佳方法,以及原因。
在 System.Windows.Forms 中,Microsoft 使用object Tag { get; set; } 作为签名,但它看起来过于局限,因为任何时候都只有一个人可以使用该标签。
我也想过HashTable Tag { get; } 允许任何人通过键设置和检索任何数据,但对于类库来说这似乎太“暴露”了。那么IDictionary Tag { get; } 将是一个更好的选择,但两者都允许任何人清除我想要避免的整个字典。再说一次,HashTable 和 IDictionary 都只允许您使用 object 实例,其中通用的东西可能是更好的选择。但Dictionary<?> Tag { get; } 显然不适用于所有可能的消费者。
那么,该走哪条路?
编辑: 正如下面的 Timwi 正确建议的那样,我不希望不同的用户类能够相互干扰。我假设有很多实体类,而只有少数类想要存储关联数据。
【问题讨论】:
标签: c# .net tags properties