Компонент 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);
И это работает просто отлично!