1
0
mirror of https://github.com/chylex/Query.git synced 2025-04-29 11:34:06 +02:00
Query/AppConv/General/DecimalUnitConverterSimple.cs
2024-08-05 20:42:15 +02:00

46 lines
1.3 KiB
C#

using System;
namespace AppConv.General;
abstract class DecimalUnitConverterSimple<T> : DecimalUnitConverterBase<T> where T : struct {
// ReSharper disable once StaticMemberInGenericType
private static readonly Func<decimal, decimal> FuncNoChange = static val => val;
private readonly DecimalFuncMap MapFrom = new ();
private readonly DecimalFuncMap MapTo = new ();
private int invalidUnitObject = -1;
protected sealed override NameMap Names { get ; } = new ();
protected sealed override DecimalFuncMap ConvertFrom => MapFrom;
protected sealed override DecimalFuncMap ConvertTo => MapTo;
protected override int Precision => 3;
protected override bool CaseCheck => true;
protected void AddUnit(T unitObject, params string[] names) {
foreach (string name in names) {
Names.Add(name, unitObject);
}
ConvertFrom.Add(unitObject, FuncNoChange);
ConvertTo.Add(unitObject, FuncNoChange);
}
protected void SetUnitFactor(T unitObject, decimal factor) {
ConvertFrom[unitObject] = val => val * factor;
ConvertTo[unitObject] = val => val / factor;
}
protected void SetInvalidUnitObject(T unitObject) {
invalidUnitObject = (int) (object) unitObject;
}
protected sealed override bool IsValueInvalid(T value) {
return (int) (object) value == invalidUnitObject;
}
}