我有一个C#类,它表示Web内容管理系统中的内容类型。
我们有一个字段,允许Web内容编辑器输入HTML模板以显示对象的显示方式。它基本上使用把手语法将对象属性值替换为HTML字符串:
<h1>{{Title}}</h1><p>{{Message}}</p>
从类设计的角度来看,我应该将格式化的HTML字符串(带有替换)作为属性或方法公开吗?
作为属性的示例:
public class Example
{
private string _template;
public string Title { get; set; }
public string Message { get; set; }
public string Html
{
get
{
return this.ToHtml();
}
protected set { }
}
public Example(Content content)
{
this.Title = content.GetValue("title") as string;
this.Message = content.GetValue("message") as string;
_template = content.GetValue("template") as string;
}
private string ToHtml()
{
// Perform substitution and return formatted string.
}
}
方法示例:
public class Example
{
private string _template;
public string Title { get; set; }
public string Message { get; set; }
public Example(Content content)
{
this.Title = content.GetValue("title") as string;
this.Message = content.GetValue("message") as string;
_template = content.GetValue("template") as string;
}
public string ToHtml()
{
// Perform substitution and return formatted string.
}
}
从设计的角度来看,我不确定它是否会有所作为,还是有原因为什么一种方法优于另一种方法?
属性的优点是,它们可以XML或JSOn序列化,但是我认为就是这样。
—
Knerd 2014年
属性应表示状态信息。不管是否计算它们都没有关系。它使在表达式中使用它们变得更加容易。只有您知道HTML是否代表对象的状态。
—
Reactgular 2014年