using System; using System.Collections.Generic; namespace Sarand.Net.Standard.Base.Bus { //======================================================================= //[Serializable()] public class SysIdString { //------------------------------------------------------------------- // Construction. public SysIdString (SysId id, String value) { Id = id; Value = value; } //------------------------------------------------------------------- // Properties - for serialisation. //[XmlAttribute] public SysId Id { get; private set; } = new SysId(); public String Value { get; private set; } = String.Empty; //------------------------------------------------------------------- // Utilities. //------------------------------------------------------------------- // Comparison. public override bool Equals (object obj) { if (obj == null) return false; if (!(obj is SysIdString)) return false; return Equals(obj as SysIdString); } public bool Equals (SysIdString value) { if (value == null) return false; // False if either Id value invalid. if (SysId.IsValid(this.Id) != SysId.IsValid(value.Id)) return false; return (SysId.ToInt(Id).Equals(SysId.ToInt(value.Id)) && Value.Equals(value.Value)); } public override int GetHashCode () { return SysId.ToInt(Id); } //------------------------------------------------------------------- // Conversion. //------------------------------------------------------------------- } //======================================================================= public static class SysIdStringList { public static void Add(this List values, SysId id, String value) { values.Add(new SysIdString(id, value)); } public static String GetValueForId(this List values, SysId id) { if (SysId.IsValid(id)) { foreach (SysIdString value in values) if (value.Id.Equals(id)) return value.Value; } return String.Empty; } } //======================================================================= }