zoukankan      html  css  js  c++  java
  • DNN学习笔记代码学习:ProviderConfiguration 荣

    using System;
    using System.IO;
    using System.Collections;
    using System.Collections.Specialized;
    using System.Configuration;
    using System.Web;
    using System.Xml;

    namespace WebApplication1
    {
     /// <summary>
     /// 返回存储配置信息的对象,
     /// 通过LoadValuesFromConfigurationXml方法和配置信息来控制当前哈希表。
     /// </summary>
     public class ProviderConfiguration
     {
      /// <summary>
      /// 一个哈希表
      /// </summary>
      private Hashtable _Providers = new Hashtable();

      /// <summary>
      /// 配置元素的“defaultProvider”属性值
      /// </summary>
      private string _DefaultProvider;

      public ProviderConfiguration()
      {
      }

      /// <summary>
      /// 从配置文件的dotnetnuke元素中取得信息,并返回为ProviderConfiguration对象
      /// </summary>
      /// <param name="strProvider"></param>
      /// <returns></returns>
      public static ProviderConfiguration GetProviderConfiguration(string strProvider)
      {
       // 根据配置信息取得ProviderConfiguration对象
       return (ProviderConfiguration)ConfigurationSettings.GetConfig("dotnetnuke/" + strProvider);
      }

      public string DefaultProvider
      {
       get
       {
        return _DefaultProvider;
       }
      }

      public Hashtable Providers
      {
       get
       {
        return _Providers;
       }
      }

      /// <summary>
      ///
      /// </summary>
      /// <param name="node"></param>
      public void LoadValuesFromConfigurationXml(XmlNode node)
      {
       // 可以按名称和索引访问的属性集合
       XmlAttributeCollection attributeCollection = node.Attributes;

       // 给DefaultProvider赋值
       _DefaultProvider = attributeCollection["defaultProvider"].Value;

       // 循环子节点
       foreach (XmlNode child in node.ChildNodes)
       {
        if (child.Name == "providers")
        {
         // 根据配置信息来操作哈希表_Providers
         GetProviders(child);
        }
       }
      }

      /// <summary>
      /// 根据配置信息来操作哈希表_Providers。
      /// </summary>
      /// <param name="node">Xml文档节点</param>
      public void GetProviders(XmlNode node)
      {
       foreach(XmlNode provider in node)
       {
        switch (provider.Name)
        {
          // 根据配置信息,向缓存中添加新元素。
          //将生成的Provider对象作为值,name属性值作为键值,添加到哈希表中
         case "add":
          // 将带有指定键和值的元素添加到哈希表_Providers中
          Providers.Add(provider.Attributes["name"].Value, new Provider(provider.Attributes));
          break;

          //  根据配置信息,向缓存中移除元素
          //  从 System.Collections.Hashtable 中移除键值为name属性值的元素。
         case "remove":
          // 将带有指定键和值的元素从哈希表_Providers中移除
          Providers.Remove(provider.Attributes["name"].Value);
          break;

          //  根据配置信息,清除缓存中的元素
          //  从 System.Collections.Hashtable 中移除所有元素。
         case "clear":
          // 移除哈希表_Providers中的所有元素
          Providers.Clear();
          break;
        }
       }
      }
     }
    }

  • 相关阅读:
    mac os x 查看网络端口情况
    mac 启动php-fpm报错 failed to open configuration file '/private/etc/php-fpm.conf': No such file or direc
    视频播放—— H5同层播放器接入规范
    [转]webpack中require和import的区别
    职场方法论系列—怎样做项目
    一幅图帮你搞懂订单的拆分与合并
    如何用数据去驱动决策?
    分库分表的 9种分布式主键ID 生成方案,挺全乎的
    快手基于 Apache Flink 的优化实践
    SQL数据库中临时表、临时变量和WITH AS关键词创建“临时表”的区别
  • 原文地址:https://www.cnblogs.com/admin11/p/193290.html
Copyright © 2011-2022 走看看