Quiero definir una excepción personalizada que tenga dos propiedades especiales: Field y FieldValue, y deseo que el mensaje se genere a partir de esos dos valores en el constructor de excepciones. Lamentablemente, el mensaje es de solo lectura.¿Cómo se hace una excepción para definir su propio mensaje en C#?
Esto es lo que tengo, pero todavía requiere que se pase el mensaje.
public class FieldFormatException: FormatException
{
private Fields _field;
private string _fieldValue;
public Fields Field{ get{ return _field; } }
public string FieldValue { get { return _value; } }
public FieldFormatException() : base() { }
private FieldFormatException(string message) { }
public FieldFormatException(string message, Fields field, string value):
base(message)
{
_fieldValue = value;
_field = field;
}
public FieldFormatException(string message, Exception inner, Fields field, string value):
base(message, inner)
{
_fieldValue = value;
_field = field;
}
protected FieldFormatException(System.Runtime.Serialization.SerializationInfo info,
System.Runtime.Serialization.StreamingContext context): base(info, context){}
}
¿Cómo puedo eliminar el mensaje como parámetro del constructor, y luego configurar el mensaje en función del valor del campo y ValorDelCampo?
Solo pensé en hacer eso justo después de publicar la pregunta. ¡Gracias! –
Sí, eso funciona.La clave es hacer que BuildMessage sea estático y pasarle el campo y el valor. –