zoukankan      html  css  js  c++  java
  • 自定义的Config节点及使用

    示例
     
    1. 下面的代码示例演示如何在创建自定义节时使用 ConfigurationProperty

     
    using System;
    using System.Configuration;
    using System.Collections;
    using System.ComponentModel;
    
    namespace ConfigurationPropertyExample
    {
        // Define a custom section.
        // Shows how to use the ConfigurationProperty
        // class when defining a custom section.
        public sealed class CustomSection : ConfigurationSection
        {
            // The collection (property bag) that contains 
            // the section properties.
            private static ConfigurationPropertyCollection _Properties;
    
            // The FileName property.
            private static ConfigurationProperty _FileName;
    
            // The Alias property.
            private static ConfigurationProperty _Alias;
    
            // The MaxUsers property.
            private static ConfigurationProperty _MaxUsers;
    
            // The MaxIdleTime property.
            private static ConfigurationProperty _MaxIdleTime;
    
            // CustomSection constructor.
            static CustomSection()
            {
                // Initialize the _FileName property
                _FileName =
                    new ConfigurationProperty("fileName",
                    typeof(string), "default.txt");
    
                // Initialize the _MaxUsers property
                _MaxUsers =
                    new ConfigurationProperty("maxUsers",
                    typeof(long), (long)1000,
                    ConfigurationPropertyOptions.None);
    
                // Initialize the _MaxIdleTime property
                TimeSpan minTime = TimeSpan.FromSeconds(30);
                TimeSpan maxTime = TimeSpan.FromMinutes(5);
    
                ConfigurationValidatorBase _TimeSpanValidator =
                    new TimeSpanValidator(minTime, maxTime, false);
    
                _MaxIdleTime =
                    new ConfigurationProperty("maxIdleTime",
                    typeof(TimeSpan), TimeSpan.FromMinutes(5),
                    TypeDescriptor.GetConverter(typeof(TimeSpan)),
                    _TimeSpanValidator,
                    ConfigurationPropertyOptions.IsRequired,
                    "[Description:This is the max idle time.]");
    
                // Initialize the _Alias property
                _Alias =
                    new ConfigurationProperty("alias",
                    typeof(string), "alias.txt");
    
                // Initialize the Property collection.
                _Properties = new ConfigurationPropertyCollection();
                _Properties.Add(_FileName);
                _Properties.Add(_Alias);
                _Properties.Add(_MaxUsers);
                _Properties.Add(_MaxIdleTime);
            }
    
            // Return the initialized property bag
            // for the configuration element.
            protected override ConfigurationPropertyCollection Properties
            {
                get
                {
                    return _Properties;
                }
            }
    
            // Clear the property.
            public void ClearCollection()
            {
                Properties.Clear();
            }
    
            // Remove an element from the property collection.
            public void RemoveCollectionElement(string elName)
            {
                Properties.Remove(elName);
            }
    
            // Get the property collection enumerator.
            public IEnumerator GetCollectionEnumerator()
            {
                return (Properties.GetEnumerator());
            }
    
            [StringValidator(InvalidCharacters = " ~!@#$%^&*()[]{}/;'"|\",
                MinLength = 1, MaxLength = 60)]
            public string FileName
            {
                get
                {
                    return (string)this["fileName"];
                }
                set
                {
                    this["fileName"] = value;
                }
            }
    
            [StringValidator(InvalidCharacters = " ~!@#$%^&*()[]{}/;'"|\",
                MinLength = 1, MaxLength = 60)]
            public string Alias
            {
                get
                {
                    return (string)this["alias"];
                }
                set
                {
                    this["alias"] = value;
                }
            }
    
            [LongValidator(MinValue = 1, MaxValue = 1000000,
                ExcludeRange = false)]
            public long MaxUsers
            {
                get
                {
                    return (long)this["maxUsers"];
                }
                set
                {
                    this["maxUsers"] = value;
                }
            }
    
            public TimeSpan MaxIdleTime
            {
                get
                {
                    return (TimeSpan)this["maxIdleTime"];
                }
                set
                {
                    this["maxIdleTime"] = value;
                }
            }
        }
    }
    
    
    

    下面的示例摘自上一示例中的代码所用的配置文件。

     
    <configuration>
      <configSections>
        <section name="CustomSection" type="ConfigurationPropertyExample.CustomSection, ConfigurationPropertyExample" 
          allowDefinition="Everywhere" allowExeDefinition="MachineToApplication" 
          restartOnExternalChanges="true" />
      </configSections>
      <CustomSection fileName="override.txt" alias="alias.txt" 
        maxUsers="1000" maxIdleTime="00:05:00" />
    </configuration>
    
    
    

    下面的示例演示如何在代码中创建以上部分。

     
    // Define a custom section programmatically.
    static void CreateSection()
    {
        try
        {
            CustomSection customSection;
    
            // Get the current configuration file.
            System.Configuration.Configuration config =
                    ConfigurationManager.OpenExeConfiguration(
                    ConfigurationUserLevel.None);
    
            // Create the section entry  
            // in the <configSections> and the 
            // related target section in <configuration>.
            // Call it "CustomSection2" since the file in this 
            // example already has "CustomSection".
            if (config.Sections["CustomSection"] == null)
            {
                customSection = new CustomSection();
                config.Sections.Add("CustomSection2", customSection);
                customSection.SectionInformation.ForceSave = true;
                config.Save(ConfigurationSaveMode.Full);
            }
        }
        catch (ConfigurationErrorsException err)
        {
            Console.WriteLine(err.ToString());
        }
    }
    
    
  • 相关阅读:
    LeetCode--414--第三大的数
    LeetCode--412--Fizz Buzz
    LeetCode--409--最长回文串
    《Cracking the Coding Interview》——第18章:难题——题目6
    《Cracking the Coding Interview》——第18章:难题——题目5
    《Cracking the Coding Interview》——第18章:难题——题目4
    《Cracking the Coding Interview》——第18章:难题——题目3
    《Cracking the Coding Interview》——第18章:难题——题目2
    《Cracking the Coding Interview》——第18章:难题——题目1
    《Cracking the Coding Interview》——第17章:普通题——题目14
  • 原文地址:https://www.cnblogs.com/baojun2014/p/3741292.html
Copyright © 2011-2022 走看看