Si j'hérite d'une classe de base et que je veux passer quelque chose du constructeur de la classe héritée au constructeur de la classe de base, comment dois-je faire ?
Par exemple,
Si j'hérite de la classe Exception, je veux faire quelque chose comme ceci :
class MyExceptionClass : Exception
{
public MyExceptionClass(string message, string extraInfo)
{
//This is where it's all falling apart
base(message);
}
}
En fait, ce que je veux, c'est pouvoir transmettre un message de type chaîne à la classe Exception de base.
Modifiez votre constructeur comme suit afin qu'il appelle correctement le constructeur de la classe de base :
public class MyExceptionClass : Exception
{
public MyExceptionClass(string message, string extrainfo) : base(message)
{
//other stuff here
}
}
Notez qu'un constructeur n'est pas quelque chose que vous pouvez appeler à tout moment dans une méthode. C'est la raison pour laquelle vous obtenez des erreurs dans votre appel dans le corps du constructeur.
Notez que vous pouvez utiliser des méthodes statiques dans l'appel au constructeur de 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;
}
}