zhaolei
2020-11-20 4a2e5b9a21940f11757be37d99f0944e240e908b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#if NET45
using System.ComponentModel;
using System.Configuration;
 
namespace Prow.Cache
{
    /// <summary>
    /// CacheSection 操作类
    /// </summary>
    internal class CacheSection : ConfigurationSection
    {
        /// <summary>
        /// 默认配置小节项名称,默认是cacheManager
        /// </summary>
        public const string DefaultSectionName = "cacheManager";
 
        /// <summary>
        /// 获得 是否启用本设置,默认为启用(true)
        /// </summary>
        [ConfigurationProperty("enabled"), DefaultValue(true)]
        public bool Enabled
        {
            get { return (bool)this["enabled"]; }
        }
 
        /// <summary>
        /// 获得 CacheOption 集合
        /// </summary>
        [ConfigurationProperty("", IsDefaultCollection = true)]
        public CacheOptionCollection CacheOptions
        {
            get { return (CacheOptionCollection)this[""]; }
        }
 
        /// <summary>
        /// 获取 CacheSection 配置项方法
        /// </summary>
        /// <returns></returns>
        public static CacheSection? GetSection()
        {
            return ConfigurationManager.GetSection(DefaultSectionName) as CacheSection;
        }
 
        /// <summary>
        /// 获取 CacheOptions 方法
        /// </summary>
        /// <returns>CacheOptions 实例</returns>
        public static CacheOptions GetOptions()
        {
            var options = new CacheOptions();
 
            var section = GetSection();
            if (section != null)
            {
                options.Enabled = section.Enabled;
                foreach (var op in section.CacheOptions) options.CacheItems.Add(op);
 
                var corsSection = CacheListSection.GetSection();
                if (corsSection != null && corsSection.Enabled) foreach (var op in corsSection.CorsItems) options.CorsItems.Add(op);
            }
            return options;
        }
    }
}
#endif