Насколько я понимаю real соответствует типу System.Decimal, а не System.Double (
https://learn.microsoft.com/en-us/dy...eveloper/reals).
Думается, что если использовать Decimal, то должно работать нормально (т.е. возвращать real):
X++:
if (sysObj is System.Double)
{
ret = ClrInterop::getAnyTypeForObject(System.Convert::ToDecimal(sysObj));
}
Согласен с Logger, any2real тоже выглядит вполне рабочим вариантом.
Интересно почему он 0.0 в nullValueBaseType конвертирует в System.Double, а не в System.Decimal.
А если вот такой код будет, то он также будет возвращать System.Double ?
X++:
if (xSession::isCLRSession())
{
return realValue;
}