Bazinio konstruktoriaus iškvietimas C# kalba

Jei paveldžiu iš bazinės klasės ir noriu ką nors perduoti iš paveldėtos klasės konstruktoriaus bazinės klasės konstruktoriui, kaip tai padaryti?

Pavyzdžiui,

Jei paveldžiu iš klasės Exception, noriu padaryti štai ką:

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

Iš esmės aš noriu, kad galėčiau perduoti eilutės pranešimą pagrindinei Exception klasei.

Sprendimas

Pakeiskite savo konstruktorių taip, kad jis tinkamai iškviestų bazinės klasės konstruktorių:

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

Atkreipkite dėmesį, kad konstruktorius nėra kažkas, ką galite iškviesti bet kuriuo metodo metu. Būtent dėl šios priežasties konstruktoriaus kūne gaunamos klaidos.

Komentarai (10)

Atkreipkite dėmesį, kad galite naudoti statinius metodus bazinio konstruktoriaus iškvietime.

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;
     }
}
Komentarai (10)
public class MyExceptionClass : Exception
{
    public MyExceptionClass(string message,
      Exception innerException): base(message, innerException)
    {
        //other stuff here
    }
}

Vienam iš konstruktorių galite perduoti vidinę išimtį.

Komentarai (0)