Se eredito da una classe base e voglio passare qualcosa dal costruttore della classe ereditata al costruttore della classe base, come faccio?
Per esempio,
Se eredito dalla classe Exception voglio fare qualcosa del genere
class MyExceptionClass : Exception
{
public MyExceptionClass(string message, string extraInfo)
{
//This is where it's all falling apart
base(message);
}
}
Fondamentalmente quello che voglio è essere in grado di passare la stringa del messaggio alla classe Exception di base.
Modificate il vostro costruttore come segue in modo che chiami correttamente il costruttore della classe base:
public class MyExceptionClass : Exception
{
public MyExceptionClass(string message, string extrainfo) : base(message)
{
//other stuff here
}
}
Nota che un costruttore non è qualcosa che puoi chiamare in qualsiasi momento all'interno di un metodo. Questa è la ragione per cui stai ottenendo errori nella tua chiamata nel corpo del costruttore.
Notate che potete usare metodi statici all'interno della chiamata al costruttore di 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;
}
}