72 lines
2.0 KiB
C#
72 lines
2.0 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
|
|
namespace Sarand.Net.Standard.Base.Bus
|
|
{
|
|
//=======================================================================
|
|
public class SysIdDecimal
|
|
{
|
|
//-------------------------------------------------------------------
|
|
// Construction.
|
|
public SysIdDecimal(SysId id, decimal value)
|
|
{
|
|
Id = id;
|
|
Value = value;
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Properties.
|
|
public SysId Id { get; private set; } = new SysId();
|
|
public decimal Value { get; private set; }
|
|
|
|
//-------------------------------------------------------------------
|
|
// Utilities.
|
|
|
|
//-------------------------------------------------------------------
|
|
// Comparison.
|
|
public override bool Equals(object obj)
|
|
{
|
|
if (obj == null) return false;
|
|
if (!(obj is SysIdDecimal)) return false;
|
|
return Equals(obj as SysIdDecimal);
|
|
}
|
|
public bool Equals(SysIdDecimal 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 SysIdDecimalList
|
|
{
|
|
public static void Add(this List<SysIdDecimal> values, SysId id, decimal value)
|
|
{
|
|
values.Add(new SysIdDecimal(id, value));
|
|
}
|
|
public static decimal GetValueForId(this List<SysIdDecimal> values, SysId id)
|
|
{
|
|
if (SysId.IsValid(id))
|
|
{
|
|
foreach (SysIdDecimal value in values)
|
|
if (value.Id.Equals(id))
|
|
return value.Value;
|
|
}
|
|
return 0.0m;
|
|
}
|
|
}
|
|
|
|
//=======================================================================
|
|
}
|