Consulte la pregunta incrustada en el comentario a continuación.Al encadenar un constructor base, ¿cómo puedo reutilizar el código de inicialización en una sobrecarga?
public class CustomException : Exception
{
private readonly string _customField;
public CustomException(string customField, string message)
: base(message)
{
// What's the best way to reuse the customField initialization code in the
// overloaded constructor? Something like this(customField)
}
public CustomException(string customField)
{
_customField = customField;
}
}
Estoy abierto a considerar implementaciones alternativas que reutilicen el constructor base y minimicen el código de inicialización. Me gustaría mantener el _customField de solo lectura, lo cual no es posible si extraigo un método de inicialización por separado.
Error de compilación: no se puede asignar un campo de solo lectura (excepto en un constructor o un inicializador de variable). Como mencioné en mi pregunta, me gustaría mantener el campo de solo lectura. –
@ZaidMasud No, no hay error de compilación. En 'Init',' _customField' es un parámetro 'out' que hace referencia al campo, pero no al campo en sí. – hvd
Ahh ... ver la edición ahora. Interesante sintaxis para ver el parámetro como un out y no un out también. Necesito probar esto. –