【发布时间】:2011-09-13 10:35:06
【问题描述】:
如果我的域对象应该包含 2 种语言的字符串属性,我应该创建 2 个单独的属性还是创建一个新类型 BiLingualString?
例如在植物分类应用中,植物域对象可以包含 Plant.LatName 和 Plant.EngName。
整个域的双语属性数量不多,大约6-8个,我只需要支持两种语言,信息应该以both 语言同时进行。 (所以这不是本地化)。在开发过程中需求不会改变。
这似乎是一个简单的问题,但这个决定会对验证、持久性、对象克隆和许多其他事情产生影响。
我可以想到使用新的 dualString 类型的负面:
- 验证:如果我要使用 DataAnattations、Enterprise Library 验证块、Flued 验证,这将需要更多的工作,对象图验证比简单的属性验证更难。
- 持久性:无论是 NH 还是 EF,都需要对复杂属性进行更多工作。
- OOP:更复杂的对象初始化,我必须先在构造函数中初始化这个新类型,然后才能使用它。
- 架构:转换对象以在层之间传递它们更难,自动映射工具需要更多的手工工作。
【问题讨论】:
-
您确定以后不需要添加第三种语言吗?
标签: c# oop domain-driven-design dns class-design