如果有理由我不走这条路,这主要是征求意见。
我有一个多层的CodeSmith生成的应用程序。在UI级别,需要一些所需的字段,并且必需的字段将根据绑定实体中的字段值而变化。我正在考虑做的是为实体中的每个属性添加一个“PropertyRequired”CustomAttribute,当我在其管理器中加载实体时,我可以设置为true或false。然后我将使用Reflection查询属性并在UI级别向用户提供可视反馈,并且我可以在保存之前验证所有必需属性在管理器中是否具有有效值。我已经把它作为概念证明,在一个实体中有一个属性,但在我尝试将其扩展到应用程序的其余部分之前,我想问一下是否有更多经验的人要么告诉我去为了它,或者为什么我在扩大规模时不喜欢它。如果这是一个坏主意,或者你可以提出更好的方法,请提出你的意见。
答案 0 :(得分:3)
这是一种非常合理的方式(之前我做过非常相似的事情) - 但总是缺点:
在大多数情况下,以上都不是问题。如果他们 是一个问题,您可能希望支持外部元数据模型 - 但除非您需要它,否则这将是过度的。除非你必须这样做,否则不要这样做(意思是:继续使用属性;它们通常很好)。
答案 1 :(得分:1)
没有内在的理由来避免自定义属性。它是受支持的CLR功能,是许多可用产品的主干(Code Contracts,FxCop等......)。
答案 2 :(得分:0)
这不是一种不合理的方法,而且比将这些内容烘焙到UI层更健康。在进行全程潜水之前,有几点值得考虑:
真的只是一个魔鬼的拥护者,一般来说,一个相当简单的应用程序,你只关心必需的字段,这是一个非常整洁的方式