我面临一个非常奇怪的问题。
我需要在{WSA_10_0环境中存储CurrencyCode
项的ProductListing
属性。
这是代码
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,但它提供了类似的错误。
附加信息:无法投射类型的对象 &#39; Windows.ApplicationModel.Store.ListingInformation&#39;输入 &#39; Windows.ApplicationModel.Store.IListingInformation2&#39;
答案 0 :(得分:2)
CurrencyCode属性以及IListingInformation2接口。如果您针对10586或更新的SDK构建应用程序,您将能够在代码中使用它,但如果您运行应用程序在Windows版本为10240的计算机上,CLR仍会尝试通过首先在Windows运行时对象上为属性获取器所在的接口执行查询接口来调用该方法(在CurrencyCode情况下,它是IListingInformation2),但查询接口调用将失败,CLR将抛出InvalidCastException。