首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

設計模式(C#):提供者模式(四)── XML 提供者實作

     編輯:關於C語言

XMLMessageProvider 完整程式碼

using System;
using System.Collections.Specialized;
using System.Collections.Generic;
using System.Configuration.Provider;
using System.Configuration;

namespace Pattern.Provider
{
    public class XMLMessageProvider : MessageProvider
    {
        private string _connectionString;

        public override bool Insert(MessageModel mm)
        {
            // 實際寫入 XML 檔案邏輯略
            return true;
        }

        public override List<MessageModel> Get()
        {
            List<MessageModel> l = new List<MessageModel>();
            l.Add(new MessageModel("XML方式,連接字符串是" + this._connectionString, DateTime.Now));
            return l;
        }

        public override void Initialize(string name, NameValueCollection config)
        {
            if (string.IsNullOrEmpty(name)) name = "MessageProvider";
            if (config == null) throw new ArgumentException("config參數不能為null");
            if (string.IsNullOrEmpty(config["description"]))
            {
                config.Remove("description");
                config.Add("description", "XML操作Message");
            }
            base.Initialize(name, config);
            string temp = config["connectionStringName"];
            if (string.IsNullOrEmpty(temp)) throw new ProviderException("connectionStringName屬性缺少或為空");
            _connectionString = ConfigurationManager.ConnectionStrings[temp].ConnectionString;
            if (string.IsNullOrEmpty(_connectionString)) throw new ProviderException("沒找到連接字符串或為空");
            config.Remove("connectionStringName");
        }
    }
}

關鍵點

  • 繼承抽象基類 MessageProvider(定義 Insert、Get 抽象方法)。
  • Initialize 讀取組態區段的 connectionStringName,透過 ConfigurationManager 取得實際連線字串。
  • 拋出 ProviderException 符合提供者模式錯誤處理慣例。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved