Llamada al constructor base en C#

Si heredo de una clase base y quiero pasar algo del constructor de la clase heredada al constructor de la clase base, ¿cómo lo hago?

Por ejemplo,

Si heredo de la clase Exception quiero hacer algo como esto:

class MyExceptionClass : Exception
{
     public MyExceptionClass(string message, string extraInfo)
     {
         //This is where it's all falling apart
         base(message);
     }
}

Básicamente lo que quiero es poder pasar el mensaje de cadena a la clase Exception base.

Solución

Modifica tu constructor a lo siguiente para que llame al constructor de la clase base correctamente:

public class MyExceptionClass : Exception
{
    public MyExceptionClass(string message, string extrainfo) : base(message)
    {
        //other stuff here
    }
}

Ten en cuenta que un constructor no es algo que puedas llamar en cualquier momento dentro de un método. Esa es la razón por la que está recibiendo errores en su llamada en el cuerpo del constructor.

Comentarios (10)

Tenga en cuenta que puede utilizar métodos estáticos dentro de la llamada al constructor base.

class MyExceptionClass : Exception
{
     public MyExceptionClass(string message, string extraInfo) : 
         base(ModifyMessage(message, extraInfo))
     {
     }

     private static string ModifyMessage(string message, string extraInfo)
     {
         Trace.WriteLine("message was " + message);
         return message.ToLowerInvariant() + Environment.NewLine + extraInfo;
     }
}
Comentarios (10)
public class MyExceptionClass : Exception
{
    public MyExceptionClass(string message,
      Exception innerException): base(message, innerException)
    {
        //other stuff here
    }
}

Puedes pasar la excepción interna a uno de los constructores.

Comentarios (0)