ベースクラスを継承して、継承したクラスのコンストラクタからベースクラスのコンストラクタに何かを渡したい場合、どのようにすればいいですか?
たとえば、以下のようになります。
Exceptionクラスを継承している場合、以下のようにしたいと思います。
class MyExceptionClass : Exception
{
public MyExceptionClass(string message, string extraInfo)
{
//This is where it's all falling apart
base(message);
}
}
基本的には、ベースとなる Exception クラスに文字列メッセージを渡せるようにしたいと考えています。
ベースクラスのコンストラクタを適切に呼び出すように、コンストラクタを以下のように変更します。
public class MyExceptionClass : Exception
{
public MyExceptionClass(string message, string extrainfo) : base(message)
{
//other stuff here
}
}
コンストラクタは、メソッド内でいつでも呼べるものではないことに注意してください。コンストラクタ本体の呼び出しでエラーが出るのはそのためです。
なお、ベースコンストラクタの呼び出しの中でstaticメソッドを使用することができます。
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;
}
}