Компонент Brokered Windows Runtime - System.Decimal

Я получаю сообщение об ошибке компилятора:

"Метод xxx имеет значение параметра типа"System.Decimal". "System.Decimal"не является допустимой средой выполнения Windows, должна возвращать только типы среды выполнения Windows."

Есть ли в любом случае я могу использовать десятичную? или я должен просто хранить значение в виде центов в целом числе?

2 ответа

Решение

Я обнаружил, что самым простым решением было хранить его в виде центов в целом числе.

Я считаю, что это может не сработать для всех валют мира, но меня интересуют только доллары, поэтому в данном конкретном случае это не проблема.

Альтернативой является внедрение шаблона "деньги" - http://martinfowler.com/eaaCatalog/money.html

На самом деле, я нашел самый простой способ, это использовать double для возвращаемых значений и параметров моего компонента WinRT.

Это то, что у меня есть в моей библиотеке классов C#

public static double Round(double value, int digits)
{
    // do stuff
}

Это код C# 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);

И это работает просто отлично!

Другие вопросы по тегам