public void Publish(string id, IValue value) { if (VariableMap.ContainsKey(id)) { var variable = VariableMap[id]; if (!Equals(variable.Value, value)) { variable.Value = value ?? VariableFallback[id]; variable.OnPropertyChanged(); OnMultiDataChanged?.Invoke(Enumerable.Repeat(variable, 1)); } } }
public void Publish(IEnumerable <Variable> variables) { IEnumerable <Variable> UpdatedVariables(IEnumerable <Variable> _variables) { foreach (var incomingVariable in _variables) { var currentVariable = VariableMap[incomingVariable.Id]; if (!Equals(currentVariable.Value, incomingVariable.Value)) { currentVariable.Value = incomingVariable.Value ?? VariableFallback[incomingVariable.Id]; currentVariable.OnPropertyChanged(); yield return(currentVariable); } } } OnMultiDataChanged?.Invoke(UpdatedVariables(variables).ToList()); }