Files
Common-VS2019/SacsStandardBase/Base/Bus/SysIdString.cs
T
2021-05-05 15:36:28 +01:00

74 lines
2.0 KiB
C#

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<SysIdString> values, SysId id, String value)
{
values.Add(new SysIdString(id, value));
}
public static String GetValueForId(this List<SysIdString> values, SysId id)
{
if (SysId.IsValid(id))
{
foreach (SysIdString value in values)
if (value.Id.Equals(id))
return value.Value;
}
return String.Empty;
}
}
//=======================================================================
}