Hvis jeg arver fra en basisklasse og ønsker at overføre noget fra den arvede klasses konstruktør til basisklassens konstruktør, hvordan gør jeg det så?
F.eks,
Hvis jeg arver fra Exception-klassen og ønsker at gøre noget som dette:
class MyExceptionClass : Exception
{
public MyExceptionClass(string message, string extraInfo)
{
//This is where it's all falling apart
base(message);
}
}
Grundlæggende er det, jeg ønsker, at jeg skal kunne videregive strengmeddelelsen til basis Exception-klassen.
Ændr din konstruktør til følgende, så den kalder basisklassens konstruktør korrekt:
public class MyExceptionClass : Exception
{
public MyExceptionClass(string message, string extrainfo) : base(message)
{
//other stuff here
}
}
Bemærk, at en konstruktor ikke er noget, som du kan kalde når som helst i en metode. Det er grunden til, at du får fejl i dit kald i konstruktorkroppen.
Bemærk, at du kan bruge statiske metoder inden for kaldet til basekonstruktøren.
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;
}
}