MessageProviderCollection
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中using System.Configuration.Provider;
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中using System;
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中namespace Pattern.Provider
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中{
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中        /// <summary>
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中        /// Message的Provider集合类
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中        /// </summary>
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中        public class MessageProviderCollection : ProviderCollection
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中        {
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                /// <summary>
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                /// 向集合中添加提供程序。
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                /// </summary>
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                /// <param name="provider">要添加的提供程序。</param>
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                public override void Add(ProviderBase provider)
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                {
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                        if (provider == null)
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                                throw new ArgumentNullException("provider参数不能为null");
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                        if (!(provider is MessageProvider))
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                                throw new ArgumentException("provider参数类型必须是MessageProvider.");
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                        base.Add(provider);
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                }
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中        }
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中}
 
MessageProviderConfigurationSection
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中using System.Configuration;
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中namespace Pattern.Provider
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中{
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中        /// <summary>
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中        /// Message的Provider的配置
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中        /// </summary>
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中        public class MessageProviderConfigurationSection : ConfigurationSection
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中        {
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                private readonly ConfigurationProperty _defaultProvider;
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                private readonly ConfigurationProperty _providers;
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                private ConfigurationPropertyCollection _properties;
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                /// <summary>
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                /// 构造函数
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                /// </summary>
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                public MessageProviderConfigurationSection()
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                {
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                        _defaultProvider = new ConfigurationProperty("defaultProvider", typeof(string), null);
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                        _providers = new ConfigurationProperty("providers", typeof(ProviderSettingsCollection), null);
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                        _properties = new ConfigurationPropertyCollection();
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                        _properties.Add(_providers);
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                        _properties.Add(_defaultProvider);
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                }
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                /// <summary>
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                /// Message的默认的Provider
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                /// </summary>
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                [ConfigurationProperty("defaultProvider")]
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                public string DefaultProvider
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                {
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                        get { return (string)base[_defaultProvider]; }
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                        set { base[_defaultProvider] = value; }
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                }
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                /// <summary>
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                /// Message的所有的Provider集合
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                /// </summary>
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                [ConfigurationProperty("providers", DefaultValue = "SqlMessageProvider")]
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                [StringValidator(MinLength = 1)]
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                public ProviderSettingsCollection Providers
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                {
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                        get { return (ProviderSettingsCollection)base[_providers]; }
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                }
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                /// <summary>
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                /// Message的Provider的属性集合
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                /// </summary>
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                protected override ConfigurationPropertyCollection Properties
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                {
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                        get { return _properties; }
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                }
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中        }
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中}
 
Message
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中using System;
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中using System.Collections.Generic;
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中using System.Configuration;
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中using System.Web.Configuration;
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中namespace Pattern.Provider
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中{
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中        /// <summary>
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中        /// 暴露给客户端用的Message的类(Context)
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中        /// </summary>
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中        public class Message
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中        {
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                private static bool m_isInitialized = false;
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                private static MessageProviderCollection _providers = null;
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                private static MessageProvider _provider = null;
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                /// <summary>
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                /// 静态构造函数,初始化
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                /// </summary>
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                static Message()
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                {
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                        Initialize();
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                }
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                /// <summary>
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                /// 插入信息
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                /// </summary>
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                /// <param name="mm">Message实体对象</param>
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                /// <returns></returns>
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                public static bool Insert(MessageModel mm)
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                {
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                        return _provider.Insert(mm);
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                }
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                /// <summary>
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                /// 获取信息
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                /// </summary>
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                /// <returns></returns>
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                public static List<MessageModel> Get()
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                {
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                        return _provider.Get();
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                }
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                private static void Initialize()
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                {
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                        try
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                        {
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                                MessageProviderConfigurationSection messageConfig = null;
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                                if (!m_isInitialized)
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                                {
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                                        // 找到配置文件中“MessageProvider”节点
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                                        messageConfig = (MessageProviderConfigurationSection)ConfigurationManager.GetSection("MessageProvider");
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                                        if (messageConfig == null)
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                                                throw new ConfigurationErrorsException("在配置文件中没找到“MessageProvider”节点");
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                                        _providers = new MessageProviderCollection();
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                                        // 使用System.Web.Configuration.ProvidersHelper类调用每个Provider的Initialize()方法
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                                        ProvidersHelper.InstantiateProviders(messageConfig.Providers, _providers, typeof(MessageProvider));
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                                        // 所用的Provider为配置中默认的Provider
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                                        _provider = _providers[messageConfig.DefaultProvider] as MessageProvider;
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                                        m_isInitialized = true;
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                                }
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                        }
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                        catch (Exception ex)
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                        {
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                                string msg = ex.Message;
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                                throw new Exception(msg);
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                        }
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                }
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                private static MessageProvider Provider
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                {
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                        get
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                        {
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                                return _provider;
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                        }
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                }
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                private static MessageProviderCollection Providers
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                {
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                        get
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                        {
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                                return _providers;
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                        }
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                }
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中        }
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中}
 
Web.config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <configSections>
        <section name="MessageProvider" type="Pattern.Provider.MessageProviderConfigurationSection, Pattern.Provider" />
    </configSections>
    <MessageProvider defaultProvider="SqlMessageProvider">
        <providers>
            <add name="XmlMessageProvider" type="Pattern.Provider.XmlMessageProvider, Pattern.Provider" connectionStringName="XmlConnection" />
            <add name="SqlMessageProvider" type="Pattern.Provider.SqlMessageProvider, Pattern.Provider" connectionStringName="SqlConnection" />
        </providers>
    </MessageProvider>
    <connectionStrings>
        <add name="SqlConnection" connectionString="server=.;database=db;uid=sa;pwd=sa" />
        <add name="XmlConnection" connectionString="XmlPath" />
    </connectionStrings>
</configuration>
 
Test
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中using System;
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中using System.Data;
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中using System.Configuration;
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中using System.Collections;
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中using System.Web;
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中using System.Web.Security;
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中using System.Web.UI;
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中using System.Web.UI.WebControls;
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中using System.Web.UI.WebControls.WebParts;
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中using System.Web.UI.HtmlControls;
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中using Pattern.Provider;
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中public partial class Provider : System.Web.UI.Page
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中{
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中        protected void Page_Load(object sender, EventArgs e)
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中        {
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                Response.Write(Message.Insert(new MessageModel("插入", DateTime.Now)));
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                Response.Write("<br />");
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中                Response.Write(Message.Get()[0].Message + " " + Message.Get()[0].PublishTime.ToString());
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中        }
上接乐在其中设计模式(C#) - 提供者模式(Provider Pattern)_乐在其中}
 
 
运行结果
True
SQL方式,连接字符串是server=.;database=db;uid=sa;pwd=sa 2007-1-22 8:21:44


OK
[×××]