Я получаю ошибку компилятора:
"Метод xxx имеет значение параметра типа" System.Decimal "." System.Decimal "недействительный Windows Runtime должен возвращать только типы времени выполнения Windows".
В любом случае, я могу использовать десятичное число? или я должен просто сохранить значение в виде центов в целых числах?
Я нашел, что самым простым решением было сохранить его в виде центов в целых числах.
Я считаю, что это может не работать для всех валют в мире, но меня беспокоят только доллары, поэтому это не проблема в этом конкретном сценарии.
Альтернативой является внедрение шаблона "деньги" - http://martinfowler.com/eaaCatalog/money.html
Фактически, я нашел самый простой способ - использовать double
для возвращаемых значений и параметров моего компонента WinRT.
Это то, что у меня есть в моей библиотеке классов С#
public static double Round(double value, int digits)
{
// do stuff
}
Это код С# Windows Runtime Portable Class Library, который я создал как оболочку для вызова из моего кода JavaScript
public static double Round(double val, int digits)
{
return MyCSharpClassLib.Class.Round(val, digits);
}
И из моего проекта JavaScript это то, что я называю
var round = WindowsRuntimeWrapper.Class1.round(3.1415926549, 3);
И это работает отлично!