namespace customTypes { /// /// gRPC送信用decimal /// public partial class DecimalValue { private const decimal NanoFactor = 1_000_000_000; public DecimalValue(long units, int nanos) { Units = units; Nanos = nanos; } /// /// 暗然変換 /// decimal = DecimalValue /// /// public static implicit operator decimal(DecimalValue grpcDecimal) { return grpcDecimal.Units + grpcDecimal.Nanos / NanoFactor; } /// /// 暗然変換 /// DecimalValue = decimal /// /// public static implicit operator DecimalValue(decimal value) { var units = decimal.ToInt64(value); var nanos = decimal.ToInt32((value - units) * NanoFactor); return new DecimalValue(units, nanos); } /// /// 比較 /// /// /// public int CompareTo(DecimalValue val) { decimal self = this; decimal inVal = val; return self.CompareTo(inVal); } /// /// c#基本型の値を返す /// /// public decimal ToDecimal() { decimal self = this; return self; } /// /// 文字列 /// /// public string ToText(string format = "") { decimal self = this; if (format.Length > 0) { return self.ToString(format); } return self.ToString(); } /// /// SQL文の値セット /// /// public string ToSqlValue() { decimal self = this; return self.ToString(); } } }