如何正确设计应包含双语信息的类

Ale*_*sev 2 c# oop dns domain-driven-design class-design

如果我的域对象应该包含2种语言的字符串属性,我应该创建2个单独的属性还是创建一个新类型BiLingualString?

例如,在工厂分类应用程序中,工厂域对象可以包含Plant.LatName和Plant.EngName.

整个域的双语属性数量不多,大约6-8,我只需要支持两种语言,信息应该同时以两种语言呈现给UI .(所以这不是locallization).在开发过程中,要求不会改变.

它可能看起来像一个简单的问题,但这个决定将对验证,持久性,对象克隆和许多其他事情产生影响.

负面我可以想到使用新的dualString类型:

  • 验证:如果我要使用DataAnattations,Enterprise Library验证块,Flued验证,这将需要更多的工作,对象图验证比简单的属性验证更难.
  • 持久性:即NH或EF需要更多复杂特性的工作.
  • OOP:更复杂的对象初始化,我必须在使用它之前初始化这个新的Type in构造函数.
  • 架构:转换对象以在层之间传递它们更加困难,自动映射工具将需要更多的手工工作.

Har*_*san 5

在阅读你的问题时,我一直在思考,why not localization但当我读到时,information should be presented to UI in both languages at the same time.我认为使用属性是有意义的.

在这种情况下,我会为你提到的每种语言都有一个字符串 BiLingualString

public class Names
{
    public string EngName {get;set;}
    public string LatName {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

然后我会在我的主要植物类中使用这个类

public class Plant: Names
{

}
Run Code Online (Sandbox Code Playgroud)