如何从c#代码中获取消费品的价格?我需要将它作为double,但StorePrice
对象似乎只提供FormattedPrice
作为字符串(例如“42,00 $”):
var storeProducts = await this.storeContext.GetStoreProductsAsync(new[] { "UnmanagedConsumable" }, new[] { "xyz" });
var iap = storeProducts.Products["xyz"];
var price = iap.Price;
price.FormattedPrice ...
我需要将价格提高一倍,以便我可以计算出一个IAP与另一个相比便宜多少。
看起来我必须解析格式化字符串中的金额,但这只是感觉很愚蠢。还有其他选择吗?
答案 0 :(得分:1)
没有API将价格作为纯数提供。我认为解析字符串不是最糟糕的解决方案,您可以使用NumberStyles.Currency
来简化:
decimal d = decimal.Parse(price.FormattedPrice, NumberStyles.Currency);
但是,您需要确保实际上正在解析正确文化下的字符串,以便Parse
方法可以处理它。当解析失败时,您当然也应该将它包装在异常处理程序中以获得备用解决方案。
货币应与用户当前的区域设置相匹配。您可以使用GlobalizationRegion
:
var geographicRegion = new Windows.Globalization.GeographicRegion();
var code = geographicRegion.CodeTwoLetter;