74 lines
2.0 KiB
C#
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;
|
|
}
|
|
}
|
|
|
|
//=======================================================================
|
|
}
|