bin/projects/dbatools/dbatools/Configuration/Config.cs

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
using System;
using System.Collections;

namespace Sqlcollaborative.Dbatools.Configuration
{
    /// <summary>
    /// Configuration Manager as well as individual configuration object.
    /// </summary>
    [Serializable]
    public class Config
    {
        /// <summary>
        /// The central configuration store 
        /// </summary>
        public static Hashtable Cfg = new Hashtable();

        /// <summary>
        /// The hashtable containing the configuration handler scriptblocks.
        /// When registering a value to a configuration element, that value is stored in a hashtable.
        /// However these lookups can be expensive when done repeatedly.
        /// For greater performance, the most frequently stored values are stored in static fields instead.
        /// In order to facilitate this, an event can be reigstered - which is stored in this hashtable - that will accept the input value and copy it to the target field.
        /// </summary>
        public static Hashtable ConfigHandler = new Hashtable();

        /// <summary>
        /// The Name of the setting
        /// </summary>
        public string Name;

        /// <summary>
        /// The module of the setting. Helps being able to group configurations.
        /// </summary>
        public string Module;

        /// <summary>
        /// A description of the specific setting
        /// </summary>
        public string Description;

        /// <summary>
        /// The data type of the value stored in the configuration element.
        /// </summary>
        public string Type
        {
            get
            {
                try { return Value.GetType().FullName; }
                catch { return null; }
            }
            set { }
        }

        /// <summary>
        /// The value stored in the configuration element
        /// </summary>
        public Object Value;

        /// <summary>
        /// Setting this to true will cause the element to not be discovered unless using the '-Force' parameter on "Get-DbaConfig"
        /// </summary>
        public bool Hidden = false;
    }
}