Brokered Windows运行时组件 - System.Decimal

时间:2014-11-07 00:47:40

标签: c# .net windows-runtime decimal enterprise

我收到编译错误:

“方法xxx的参数值类型为”System.Decimal“。”System.Decimal“不是有效的Windows运行时必须只返回Windows运行时类型。”

无论如何我可以使用小数?或者我应该将值存储为整数美分?

2 个答案:

答案 0 :(得分:0)

我发现最简单的解决方案是将其存储为整数美分。

我认为这可能不适用于世界上所有的货币,但我只关注美元,因此在这种特殊情况下不是问题。

另一种方法是实施“金钱”模式 - http://martinfowler.com/eaaCatalog/money.html

答案 1 :(得分:0)

实际上,我发现最简单的方法是使用double作为WinRT组件的返回值和参数。

这就是我在C#类库中的内容

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

这是我作为从我的JavaScript代码调用的包装器创建的C#Windows运行时可移植类库的代码

public static double Round(double val, int digits)
{
    return MyCSharpClassLib.Class.Round(val, digits);
}

从我的JavaScript项目中,这就是我所说的

var round = WindowsRuntimeWrapper.Class1.round(3.1415926549, 3);

它运作得很好!