Acabo de encontrar un código que anula ToString()
y devuelve información crítica (no solo información de depuración). Los usuarios de este tipo llamaron al ToString()
y analizaron esos datos críticos.¿Se debe usar ToString para obtener información crítica?
mi opinión, de la lectura de diversas partes y piezas en los últimos años, es que tiene un ToString()
más bien débil contract
, es decir anularlo (si quieres) a pantalla algunas cosas con sentido.
Ver Dije pantalla allí? El código que encontré se basó en la representación textual de instancias de este tipo para ser muy específico; agregar cualquier cosa que no sea lo que se espera podría causar todo tipo de problemas.
Entonces, mi pregunta es, si la representación textual de un objeto es crítica, se debe usar ToString()
o se debe usar un método/propiedad más explícito, p. AsText
?
Estoy completamente de acuerdo, pero argumentaría que el método ToString puede ser un buen candidato para generar datos de texto siempre que su objeto implemente IFormattable. Hay varios frameworks de enlace de datos que funcionarían mucho mejor con IFormattable.ToString que con MyCustomTextOutputMethod() ... pero eso no quiere decir que no puedas tener ambos :) – MattDavey
@MattDavey Fair point, aunque eso es muy diferente a solo anulando el método estándar 'ToString()'. Voy a actualizar para abordar eso, sin embargo. – dlev
Sí, es importante enfatizar la distinción entre los dos métodos. Lo que más me gusta de IFormattable es que en el patrón de implementación estándar, Object.ToString difiere a IFormattable.ToString ("G"), lo que le da una buena ruta de progresión :) – MattDavey