/// <summary> /// Initializes the environment variables for the current user of /// the local machine. /// </summary> /// <param name="target"> /// One of the <see cref="System.EnvironmentVariableTarget" /> values. /// </param> private void InitializeVariables(EnvironmentVariableTarget target) { Variable.VariableType type; switch (target) { case EnvironmentVariableTarget.Machine: type = Variable.VariableType.System; break; case EnvironmentVariableTarget.User: type = Variable.VariableType.User; break; default: throw new ArgumentException("Invalid environment variable target", "target"); } IDictionary<string, string> variables = Proxy.GetEnvironmentVariables(target); foreach (string name in variables.Keys) { Variable variable = new Variable(); variable.Name = name; variable.State = true; variable.Type = type; foreach (string content in variables[name].Split(';')) { Value value = new Value(); value.Content = content; value.State = true; variable.Values.Add(value); } Manager.Variables.Add(variable); } }
/// <summary> /// Generates an object from its XML representation. /// </summary> /// <param name="reader"> /// The <see cref="System.Xml.XmlReader" /> stream from which the object is /// deserialized. /// </param> public void ReadXml(XmlReader reader) { if (!reader.IsStartElement("Variable")) { throw new XmlException("Expected <Variable> element"); } bool isEmptyElement = reader.IsEmptyElement; reader.ReadStartElement("Variable"); if (!isEmptyElement) { if (!reader.IsStartElement("Name")) { throw new XmlException("Expected <Name> subelement in <Variable> element"); } isEmptyElement = reader.IsEmptyElement; reader.ReadStartElement("Name"); if (!isEmptyElement) { this.Name = reader.ReadContentAsString(); reader.ReadEndElement(); // Name } if (!reader.IsStartElement("State")) { throw new XmlException("Expected <State> subelement in <Variable> element"); } isEmptyElement = reader.IsEmptyElement; reader.ReadStartElement("State"); if (!isEmptyElement) { this.State = Convert.ToBoolean(reader.ReadContentAsString()); reader.ReadEndElement(); // State } if (!reader.IsStartElement("Type")) { throw new XmlException("Expected <Type> subelement in <Variable> element"); } isEmptyElement = reader.IsEmptyElement; reader.ReadStartElement("Type"); if (!isEmptyElement) { this.Type = (VariableType)Enum.Parse(typeof(VariableType), reader.ReadContentAsString()); reader.ReadEndElement(); // Type } if (!reader.IsStartElement("Values")) { throw new XmlException("Expected <Values> subelement in <Variable> element"); } isEmptyElement = reader.IsEmptyElement; reader.ReadStartElement("Values"); if (!isEmptyElement) { while (reader.IsStartElement("Value")) { Value value = new Value(); value.ReadXml(reader); this.Values.Add(value); } reader.ReadEndElement(); // Values } reader.ReadEndElement(); // Variable } }