Tengo una clase C # que representa un tipo de contenido en un sistema de gestión de contenido web.
Tenemos un campo que permite que un editor de contenido web ingrese una plantilla HTML para mostrar el objeto. Básicamente utiliza la sintaxis del manillar para sustituir los valores de las propiedades del objeto en la cadena HTML:
<h1>{{Title}}</h1><p>{{Message}}</p>
Desde una perspectiva de diseño de clase, ¿debo exponer la cadena HTML formateada (con sustitución) como una propiedad o método ?
Ejemplo como propiedad:
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.
}
}
Ejemplo 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.
}
}
No estoy seguro desde el punto de vista del diseño, ¿hace alguna diferencia o hay razones por las cuales un enfoque es mejor que el otro?