Wenn ich von einer Basisklasse erbe und etwas vom Konstruktor der geerbten Klasse an den Konstruktor der Basisklasse übergeben möchte, wie mache ich das?
Zum Beispiel,
Wenn ich von der Klasse Exception erbe, möchte ich etwas wie folgt tun:
class MyExceptionClass : Exception
{
public MyExceptionClass(string message, string extraInfo)
{
//This is where it's all falling apart
base(message);
}
}
Im Grunde möchte ich die String-Nachricht an die Basisklasse Exception übergeben können.
Ändern Sie Ihren Konstruktor so ab, dass er den Konstruktor der Basisklasse korrekt aufruft:
public class MyExceptionClass : Exception
{
public MyExceptionClass(string message, string extrainfo) : base(message)
{
//other stuff here
}
}
Beachten Sie, dass ein Konstruktor nicht jederzeit innerhalb einer Methode aufgerufen werden kann. Das ist der Grund, warum Sie Fehler in Ihrem Aufruf im Konstruktorkörper erhalten.
Beachten Sie, dass Sie statische Methoden innerhalb des Aufrufs des Basiskonstruktors verwenden können.
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;
}
}
public class MyExceptionClass : Exception
{
public MyExceptionClass(string message,
Exception innerException): base(message, innerException)
{
//other stuff here
}
}
Sie können eine innere Ausnahme an einen der Konstruktoren übergeben.