/// <summary> /// Sets a value in the state. /// </summary> /// <param name="item">The item.</param> /// <param name="name">The name.</param> /// <param name="value">The value.</param> public void SetValue(ProjectItem item, string name, string value) { var localValue = this.FindValue(item, name); if (localValue == null) { if (value != null) { this.Values.Add(new ProjectValue(item.UniversalName, name, value)); } } else { if (value == null) { this.Values.Remove(localValue); } else { localValue.Value = value; } } }
/// <summary> /// Gets a value from the state. /// </summary> /// <param name="item">The item.</param> /// <param name="name">The name.</param> /// <returns> /// The value if it exists; <c>null</c> otherwise. /// </returns> public string GetValue(ProjectItem item, string name) { var value = this.FindValue(item, name); return value == null ? null : value.Value; }
/// <summary> /// Attempts to find a value. /// </summary> /// <param name="item">The item.</param> /// <param name="name">The name.</param> /// <returns> /// The <see cref="ProjectValue"/> if found; <c>null</c> otherwise. /// </returns> private ProjectValue FindValue(ProjectItem item, string name) { var value = this.Values .SingleOrDefault(v => v.Owner == item.UniversalName && v.Name == name); return value; }