using System; using System.Collections.Generic; using System.Runtime.Serialization; using GitHub.Services.WebApi; namespace GitHub.Build.WebApi { /// /// Represents a variable group. /// [DataContract] public class VariableGroup : VariableGroupReference { public VariableGroup() : this(null) { } internal VariableGroup( ISecuredObject securedObject) : base(securedObject) { } /// /// The type of the variable group. /// [DataMember(EmitDefaultValue = false)] public String Type { get; set; } /// /// The name of the variable group. /// [DataMember(EmitDefaultValue = false)] public String Name { get; set; } /// /// The description. /// [DataMember(EmitDefaultValue = false)] public String Description { get; set; } /// /// The variables in this group. /// public IDictionary Variables { get { if (m_variables == null) { m_variables = new Dictionary(StringComparer.OrdinalIgnoreCase); } return m_variables; } internal set { m_variables = new Dictionary(value, StringComparer.OrdinalIgnoreCase); } } [OnDeserialized] private void OnDeserialized(StreamingContext context) { SerializationHelper.Copy(ref m_serializedVariables, ref m_variables, StringComparer.OrdinalIgnoreCase, true); } [OnSerializing] private void OnSerializing(StreamingContext context) { SerializationHelper.Copy(ref m_variables, ref m_serializedVariables, StringComparer.OrdinalIgnoreCase); } [OnSerialized] private void OnSerialized(StreamingContext context) { m_serializedVariables = null; } [DataMember(Name = "Variables", EmitDefaultValue = false)] private IDictionary m_serializedVariables; private IDictionary m_variables; } }