Taylohtio/AlertManager/SPSolutions.SharePoint.Aler.../SPSolutions.Common/SPSolutions.Net.Mail/MailBodyManager.cs

58 lines
1.5 KiB
C#

using SPSolutions.Configuration.Provider;
using SPSolutions.Net.Configuration;
using System;
using System.Configuration;
using System.Configuration.Provider;
using System.Threading;
namespace SPSolutions.Net.Mail
{
public static class MailBodyManager
{
private static MailBodyProvider _provider = null;
private static MailBodyProviderCollection _providers = null;
private static object _lock = new object();
public static MailBodyProvider Provider
{
get
{
MailBodyManager.LoadProviders();
return MailBodyManager._provider;
}
}
public static MailBodyProviderCollection Providers
{
get
{
MailBodyManager.LoadProviders();
return MailBodyManager._providers;
}
}
private static void LoadProviders()
{
if (MailBodyManager._provider == null)
{
object @lock;
Monitor.Enter(@lock = MailBodyManager._lock);
try
{
if (MailBodyManager._provider == null)
{
MailBodySection mailBodySection = (MailBodySection)ConfigurationManager.GetSection("spSolutions.net.mail/mailBody");
MailBodyManager._providers = new MailBodyProviderCollection();
ProvidersHelper.InstantiateProviders(mailBodySection.Providers, MailBodyManager._providers, typeof(MailBodyProvider));
MailBodyManager._provider = MailBodyManager._providers[mailBodySection.DefaultProvider];
if (MailBodyManager._provider == null)
{
throw new ProviderException("Unable to load default MailBodyProvider");
}
}
}
finally
{
Monitor.Exit(@lock);
}
}
}
}
}