これに対する答えを求めて SO を掘り下げましたが、これまでに見つけた最高のものはhere ですが、これは静的コンストラクターを持つインスタンスを対象としています。クラスを静的にのみ使用しています。
私のコード:
public static class MailHelper {
private static string mailHost;
static MailHelper() {
var mailSettings = ConfigurationManager.GetSection("MailSettings") as NameValueCollection;
if (null == mailSettings) {
throw new ConfigurationErrorsException("Missing Mail Settings in the configuration file");
}
mailHost = ConfigurationManager.AppSettings["mailHost"];
if (null == mailHost) {
throw new ConfigurationErrorsException("Missing mailHost setting in the configuration file");
}
}
public static void SendMail(MailMessage Message) {
...
}
}
try {
MailHelper.SendMail(Message);
}
catch (ConfigurationErrorsException exc) {
...
}
// ???
MailHelper.SendMail(Message);
.
では、静的コンストラクターが最初に呼び出されたときに例外をスローした場合、2 回目に静的な SendMail() メソッドにアクセスしようとするとどうなるでしょうか?
PS: Stroustrup のバージョンの K&R ブレース スタイルが気に入らない場合は申し訳ありませんが、ブレースを好みの Allman スタイルに変更するためだけに私の投稿を編集しないでください。ありがとう。