【发布时间】:2017-04-29 17:13:22
【问题描述】:
我正面临一个非常奇怪的问题。
我需要将 ProductListing 项目的 CurrencyCode 属性存储在 WSA_10_0 环境中。
这里是代码
foreach (ProductListing product in listings.ProductListings.Values)
{
Debug.Log("CURRENCY_CODE/"+product.CurrencyCode);
}
尝试执行代码时出现以下错误
附加信息:无法转换类型的对象 'Windows.ApplicationModel.Store.ProductListing' 键入 'Windows.ApplicationModel.Store.IProductListing2'。
现在,这真的很奇怪,因为 as this documentation page states ProductListing 对象继承自 IProductListing2。
整个异常内容都在这里
System.InvalidCastException occurred
HResult=-2147467262
Message=Unable to cast object of type 'Windows.ApplicationModel.Store.ProductListing' to type 'Windows.ApplicationModel.Store.IProductListing2'.
Source=mscorlib
StackTrace:
at System.StubHelpers.StubHelpers.GetCOMIPFromRCW_WinRT(Object objSrc, IntPtr pCPCMD, IntPtr& ppTarget)
at Windows.ApplicationModel.Store.ProductListing.get_CurrencyCode()
at CI.WSANative.IAPStore.WSANativeStore.<GetProductListingsAsync>d__5.MoveNext()
InnerException:
更新:
我尝试访问列表对象的 CurrencyCode 属性,该属性的类型为 ListingInformation,尽管它应该具有该属性 basing on the class documentation,但它给出了类似的错误。
附加信息:无法转换类型的对象 'Windows.ApplicationModel.Store.ListingInformation' 键入 'Windows.ApplicationModel.Store.IListingInformation2'。
【问题讨论】:
-
能否提供您所在的代码
casting? -
这就是重点,我没有投任何东西。似乎正在进行一些隐式转换,好像它在对象类型中找不到 CurrencyCode 属性
-
你能在
foreach循环中删除你的.Values吗? -
我认为这无关紧要,因为我刚刚发现
ListingInformation类型的列表对象也具有 CurrencyCode 属性,并且以相同的方式失败。Additional information: Unable to cast object of type 'Windows.ApplicationModel.Store.ListingInformation' to type 'Windows.ApplicationModel.Store.IListingInformation2'.我开始认为这可能与某种 API 不匹配有关 -
listings.ProductListings.Values的返回类型是什么?