Eu tenho uma classe C # que representa um tipo de conteúdo em um sistema de gerenciamento de conteúdo da web.
Temos um campo que permite que um editor de conteúdo da web insira um modelo HTML de como o objeto é exibido. Basicamente, usa a sintaxe do guidão para substituir os valores da propriedade do objeto na string HTML:
<h1>{{Title}}</h1><p>{{Message}}</p>
De uma perspectiva de design de classe, devo expor a string HTML formatada (com substituição) como uma propriedade ou método ?
Exemplo como propriedade:
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.
}
}
Exemplo como método:
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.
}
}
Não tenho certeza do ponto de vista do design, isso faz alguma diferença ou existem razões pelas quais uma abordagem é melhor que a outra?