域类中的Html格式

时间:2009-05-26 20:46:06

标签: design-patterns architecture domain-driven-design

我的域中有一个简单的地址对象,它有一个ToString()方法,返回如下地址:

123 Test Ave.
Appt 1A
斯波坎,WA 99201

我们将在几个不同的场合将它放在一个网页上,这样就可以在某个地方添加功能以显示带有Html格式的地址,但是如果我在哪里向我的域类添加ToStringHtmlFormat()它会开始开始闻起来很有趣。

我可能有点挑剔,但你在哪里/如何建议完成这个以保持我的域类免于任何Html的东西?

感谢您的建议......

2 个答案:

答案 0 :(得分:6)

你可以拥有一个能够“访问”域类并打印出来的HTMLWriter。然后,您的域类需要一个Accept方法来接受访问者(访问者模式)。

在灵活性和可维护性方面,我会选择一些包含HTML的模板引擎以及对要打印的属性的访问权限。通常,更复杂的站点也会引入一种称为ViewModel的东西,它可以使UI HTML引擎可以轻松访问的方式准备数据。

答案 1 :(得分:1)

您可以添加扩展方法:

public static class AddressHelpers
{
  public static string ToStringHtmlFormat (this Address address)
  {
      string result = address.Address1;
      // snip..
      return result;
  }
}

现在你可以控制何时&扩展方法包含在项目中的位置(例如:仅在您的Web应用程序中)。