zoukankan      html  css  js  c++  java
  • IConfigurationSectionHandler 使用~

    读取webconfig中自定义的xml  处理对特定的配置节的访问。

    webconfig

    1   <configSections>
    2     <section name="NopConfig" type="BotanicSystem.Core.Configuration.NopConfig, BotanicSystem.Core" requirePermission="false" />
    3   </configSections>
     1   <NopConfig>
     2     <!-- Web farm support
     3     Enable "MultipleInstancesEnabled" if you run multiple instances.
     4     Enable "RunOnAzureWebsites" if you run on Windows Azure Web sites (not cloud services). -->
     5     <WebFarms MultipleInstancesEnabled="False" RunOnAzureWebsites="False" />
     6     <!-- Windows Azure BLOB storage. Specify your connection string, container name, end point for BLOB storage here -->
     7     <AzureBlobStorage ConnectionString="" ContainerName="" EndPoint="" />
     8     <!-- Redis support (used by web farms, Azure, etc). Find more about it at https://azure.microsoft.com/en-us/documentation/articles/cache-dotnet-how-to-use-azure-redis-cache/ -->
     9     <RedisCaching Enabled="false" ConnectionString="localhost" />
    10     <!-- You can get the latest version of user agent strings at http://browscap.org/ -->
    11     <UserAgentStrings databasePath="~/App_Data/browscap.xml" />
    12     <!-- Set the setting below to "False" if you did not upgrade from one of the previous versions. It can slightly improve performance -->
    13     <SupportPreviousNopcommerceVersions Enabled="True" />
    14     <!-- Do not edit this element. For advanced users only -->
    15     <Installation DisableSampleDataDuringInstallation="False" UseFastInstallationService="False" PluginsIgnoredDuringInstallation="" />
    16   </NopConfig>

    解析读取

      1     /// <summary>
      2     /// Represents a NopConfig
      3     /// </summary>
      4     public partial class NopConfig : IConfigurationSectionHandler
      5     {
      6         /// <summary>
      7         /// Creates a configuration section handler.
      8         /// </summary>
      9         /// <param name="parent">Parent object.</param>
     10         /// <param name="configContext">Configuration context object.</param>
     11         /// <param name="section">Section XML node.</param>
     12         /// <returns>The created section handler object.</returns>
     13         public object Create(object parent, object configContext, XmlNode section)
     14         {
     15             var config = new NopConfig();
     16 
     17             var startupNode = section.SelectSingleNode("Startup");
     18             config.IgnoreStartupTasks = GetBool(startupNode, "IgnoreStartupTasks");
     19            
     20             var redisCachingNode = section.SelectSingleNode("RedisCaching");
     21             config.RedisCachingEnabled = GetBool(redisCachingNode, "Enabled");
     22             config.RedisCachingConnectionString = GetString(redisCachingNode, "ConnectionString");
     23 
     24             var userAgentStringsNode = section.SelectSingleNode("UserAgentStrings");
     25             config.UserAgentStringsPath = GetString(userAgentStringsNode, "databasePath");
     26            
     27             var supportPreviousNopcommerceVersionsNode = section.SelectSingleNode("SupportPreviousNopcommerceVersions");
     28             config.SupportPreviousNopcommerceVersions = GetBool(supportPreviousNopcommerceVersionsNode, "Enabled");
     29             
     30             var webFarmsNode = section.SelectSingleNode("WebFarms");
     31             config.MultipleInstancesEnabled = GetBool(webFarmsNode, "MultipleInstancesEnabled");
     32             config.RunOnAzureWebsites = GetBool(webFarmsNode, "RunOnAzureWebsites");
     33 
     34             var azureBlobStorageNode = section.SelectSingleNode("AzureBlobStorage");
     35             config.AzureBlobStorageConnectionString = GetString(azureBlobStorageNode, "ConnectionString");
     36             config.AzureBlobStorageContainerName = GetString(azureBlobStorageNode, "ContainerName");
     37             config.AzureBlobStorageEndPoint = GetString(azureBlobStorageNode, "EndPoint");
     38 
     39             var installationNode = section.SelectSingleNode("Installation");
     40             config.DisableSampleDataDuringInstallation = GetBool(installationNode, "DisableSampleDataDuringInstallation");
     41             config.UseFastInstallationService = GetBool(installationNode, "UseFastInstallationService");
     42             config.PluginsIgnoredDuringInstallation = GetString(installationNode, "PluginsIgnoredDuringInstallation");
     43 
     44             return config;
     45         }
     46 
     47         private string GetString(XmlNode node, string attrName)
     48         {
     49             return SetByXElement<string>(node, attrName, Convert.ToString);
     50         }
     51 
     52         private bool GetBool(XmlNode node, string attrName)
     53         {
     54             return SetByXElement<bool>(node, attrName, Convert.ToBoolean);
     55         }
     56 
     57         private T SetByXElement<T>(XmlNode node, string attrName, Func<string, T> converter)
     58         {
     59             if (node == null || node.Attributes == null) return default(T);
     60             var attr = node.Attributes[attrName];
     61             if (attr == null) return default(T);
     62             var attrVal = attr.Value;
     63             return converter(attrVal);
     64         }
     65 
     66         /// <summary>
     67         /// Indicates whether we should ignore startup tasks
     68         /// </summary>
     69         public bool IgnoreStartupTasks { get; private set; }
     70 
     71         /// <summary>
     72         /// Path to database with user agent strings
     73         /// </summary>
     74         public string UserAgentStringsPath { get; private set; }
     75 
     76 
     77 
     78         /// <summary>
     79         /// Indicates whether we should use Redis server for caching (instead of default in-memory caching)
     80         /// </summary>
     81         public bool RedisCachingEnabled { get; private set; }
     82         /// <summary>
     83         /// Redis connection string. Used when Redis caching is enabled
     84         /// </summary>
     85         public string RedisCachingConnectionString { get; private set; }
     86 
     87 
     88 
     89         /// <summary>
     90         /// Indicates whether we should support previous nopCommerce versions (it can slightly improve performance)
     91         /// </summary>
     92         public bool SupportPreviousNopcommerceVersions { get; private set; }
     93 
     94 
     95 
     96         /// <summary>
     97         /// A value indicating whether the site is run on multiple instances (e.g. web farm, Windows Azure with multiple instances, etc).
     98         /// Do not enable it if you run on Azure but use one instance only
     99         /// </summary>
    100         public bool MultipleInstancesEnabled { get; private set; }
    101 
    102         /// <summary>
    103         /// A value indicating whether the site is run on Windows Azure Websites
    104         /// </summary>
    105         public bool RunOnAzureWebsites { get; private set; }
    106 
    107         /// <summary>
    108         /// Connection string for Azure BLOB storage
    109         /// </summary>
    110         public string AzureBlobStorageConnectionString { get; private set; }
    111         /// <summary>
    112         /// Container name for Azure BLOB storage
    113         /// </summary>
    114         public string AzureBlobStorageContainerName { get; private set; }
    115         /// <summary>
    116         /// End point for Azure BLOB storage
    117         /// </summary>
    118         public string AzureBlobStorageEndPoint { get; private set; }
    119 
    120 
    121         /// <summary>
    122         /// A value indicating whether a store owner can install sample data during installation
    123         /// </summary>
    124         public bool DisableSampleDataDuringInstallation { get; private set; }
    125         /// <summary>
    126         /// By default this setting should always be set to "False" (only for advanced users)
    127         /// </summary>
    128         public bool UseFastInstallationService { get; private set; }
    129         /// <summary>
    130         /// A list of plugins ignored during nopCommerce installation
    131         /// </summary>
    132         public string PluginsIgnoredDuringInstallation { get; private set; }
    133     }
    View Code

    使用

    1 var config = ConfigurationManager.GetSection("NopConfig") as NopConfig;

    IConfigurationSectionHandler  是 在System.Configuration 下

  • 相关阅读:
    第四章
    第三章
    第二章
    实验5-2: 编制程序,输入m、n(m≥n≥0)后,计算下列表达式的值并输出。 要求将计算阶乘的运算编写作函数fact(n),函数返回值的类型为float
    作业
    多人电费
    单人电费
    圆柱体积
    圆面积
    第七章
  • 原文地址:https://www.cnblogs.com/sunzgod/p/6225655.html
Copyright © 2011-2022 走看看