我在SO上找了很久,找到了一个最好的答案:这里,不过那个回答针对带有静态构造函数的实例;而我的情况是只使用了静态类。
我的代码:
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);
.
如果静态构造函数在第一次调用时抛出异常,那么我再次尝试访问静态的SendMail()方法会发生什么?PS:如果您不喜欢Stroustrup版本的K&R括号样式,请不要编辑我的帖子以将大括号更改为您首选的Allman样式。 谢谢。
Init()
函数如何?在使用之前调用它(如果已经初始化,则不执行任何操作),如果它抛出异常,则不要使用该类。 - Cameron