Als ik erf van een basisklasse en iets wil doorgeven van de constructor van de geërfde klasse aan de constructor van de basisklasse, hoe doe ik dat dan?
Bijvoorbeeld,
Als ik erf van de klasse Uitzondering en ik wil zoiets doen als dit:
class MyExceptionClass : Exception
{
public MyExceptionClass(string message, string extraInfo)
{
//This is where it's all falling apart
base(message);
}
}
Wat ik in principe wil is de string message kunnen doorgeven aan de basis Exception klasse.
Wijzig je constructor in het volgende, zodat hij de constructor van de basisklasse correct aanroept:
public class MyExceptionClass : Exception
{
public MyExceptionClass(string message, string extrainfo) : base(message)
{
//other stuff here
}
}
Merk op dat een constructor niet iets is dat je op elk moment binnen een methode kunt aanroepen. Dat is de reden waarom je fouten krijgt in je aanroep in de constructor body.
Merk op dat je statische methoden kunt gebruiken binnen de aanroep van de basisconstructor.
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
}
}
U kunt een innerlijke uitzondering doorgeven aan een van de constructeurs.