假设我们有一个用于编辑小部件的表单。一个给定的 Widget 有一个 Attribute。该属性 (A) 的值可以是存储的属性列表 (1, 2, 3) 之一。我们的属性列表用于多种 Widget 类型。
现在,从数据的角度来看,给定的 Widget 可以具有任何列表的属性 A(它可以包含值 1、2 或 3)。但是,我们的业务规则规定 Widget 类型 X 不能在属性 A 中包含值 1。
我的问题是,我在哪里存储表单将用于填充属性 A 列表的信息?
现在,碰巧我为小部件 X、Y 和 Z 使用了不同的表单,但理论上,我们可能不得不在同一个表单上解决这个问题。我可以将它存储在 Widget 类或 Attribute 类中,但我觉得这并不代表实际的对象信息(同样,“sushi”不是 Dog 类的有效 Food,即使它是完全有效的食物,它无法描述狗)。您将如何填充“编辑狗”表单上的“食物”列表?我需要批准的列表信息是可编辑的,并且不需要重新部署代码,因为用户是善变的,最终有人会想要喂他们的狗寿司。
用 C# 编写这个,但我觉得这个问题与语言无关。
在用户 Blueberry 回复后添加:
谢谢,可能我的描述不是很清楚。想象一个 Widgets 表、一个 Attributes 表和一个 Widget_Attributes 表,这将是一个包含允许分配给 Widget 的给定属性的 Attributes 的外部参照。这是可以做到的一种方式,但看起来像是代码异味,因为它可能会导致 Widget 上的每个属性都有一个外部参照表。所以我正在寻找一种方法来填充控件,该控件仅使用该类型小部件允许的属性值。
现在主要的想法是向每个属性记录添加一个标志枚举,以指示该属性对哪些小部件有效。在 Dog-Food 示例中,Food sushi 将具有值为 1 的 EatenBy 枚举属性,其中枚举将定义为 Human = 1、Dog = 2、Cat = 4。