Bu sorunun cevabı için SO'yu kazdım ve şu ana kadar bulabildiğim en iyisi here, ancak statik yapıcılarla örneklere yöneliktir; Sadece sınıfı statik olarak kullanıyorum.Statik kurucudaki istisna
Kodum:
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);
.
Yani statik yapıcı ben statik SendMail() yöntemini erişmeye çalıştığınızda ikinci kez ne bir istisna denir ilk kez atarsa?
Not: Stroustrup'ın K & R brace stilini beğenmediyseniz, ancak postlarımı yalnızca tercih ettiğiniz Allman stiline dönüştürmek için postumu düzenlemediyseniz üzgünüz. Teşekkürler.
Başarısız olmalı, ama kendiniz için denemenin nesi yanlış? –
(Statik) yapıcıdan atmak gerçekten bir anlam ifade etmiyor, çünkü sınıf kararsız bir durumda (tam olarak başlatılamıyor). Kullanmadan önce belirttiğiniz açık bir 'Init()' fonksiyonu yaratmaya (zaten başlatılmışsa hiçbir şey yapmamalı) ve bir istisna atarsa, * sınıfı kullanmayın * – Cameron
Pontus daha fazla puan:) –