Encuentro con demasiada frecuencia el siguiente error en mi código y me pregunto si alguien conoce algunas buenas estrategias para evitarlo.C#: evitar errores causados por no anular ToString
Imagine una clase como esta:
public class Quote
{
public decimal InterestRate { get; set; }
}
En algún momento se crea una cadena que utiliza el tipo de interés, de esta manera:
public string PrintQuote(Quote quote)
{
return "The interest rate is " + quote.InterestRate;
}
Ahora imagine en una fecha posterior que refactorizado la InterestRate propiedad de un decimal a su propia clase:
public class Quote
{
public InterestRate InterestRate { get; set; }
}
... pero dicen que olvidé para anular el método ToString en la clase InterestRate. A menos que busque cuidadosamente cada uso de la propiedad InterestRate, probablemente nunca notaría que en algún momento se está convirtiendo en una cadena. El compilador ciertamente no captaría esto. Mi única posibilidad de salvador es a través de una prueba de integración.
La próxima vez que llamo mi PrintQuote método, me gustaría tener una cadena como esta:
"La tasa de interés es Business.Finance.InterestRate".
Ouch. ¿Cómo puede esto ser evitado?
Realmente no creo que desee que el compilador invente implementaciones arbitrarias de ToString() para usted. –