在Xamarin iOS中运行我的代码时,我收到InvalidCastException
。这不会发生在.NET或Android上 - 仅适用于iOS。这里的异常的详细信息:Xamarin iOS中的InvalidCastException
在 Microsoft.Scripting.Interpreter.EqualInstruction + EqualInt64.DoCalculate (System.Object的升,System.Object的R)[0x00000]在 /用户/助洗剂/数据/通道/ 3426/6c3fee4d /源极/ xamarin-macios/_ios-构建/库/框架/ Xamarin.iOS.framework /版本/ GIT中/ SRC /单声道/ MCS /类/ DLR /运行时间/ Microsoft.Dynamic /口译/说明/ EqualInstruction。 cs:84 at Microsoft.Scripting.Interpreter.ComparisonInstruction.Calculate (System.Object l,System.Object r)[0x00015] in /Users/builder/data/lanes/3426/6c3fee4d/source/xamarin-macios/_ios-构建/库/框架/ Xamarin.iOS.framework /版本/ GIT中/ SRC /单声道/米cs/class/dlr/Runtime/Microsoft.Dynamic/Interpreter/Instructions/ComparisonInstruction.cs:44 at Microsoft.Scripting.Interpreter.ArithmeticInstruction.Run (Microsoft.Scripting.Interpreter.InterpretedFrame frame)[0x00020] in /Users /builder/data/lanes/3426/6c3fee4d/source/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/src/mono/mcs/class/dlr/Runtime/Microsoft.Dynamic /Interpreter/Instructions/ArithmeticInstruction.cs:45 at Microsoft.Scripting.Interpreter.Interpreter.Run (Microsoft.Scripting.Interpreter.InterpretedFrame frame)[0x0001b] in /Users/builder/data/lanes/3426/6c3fee4d/source/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/src/mono/mcs/class/dlr/Runtime/Microsoft.Dynamic/Interpreter/Interpreter.cs:126
---从先前位置栈跟踪其中抛出异常---在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() [0x0000c]在 /用户/助洗剂/数据/通道/ 3426结束/6c3fee4d/source/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/src/mono/mcs/class/referencesource/mscorlib/system/runtime/exceptionservices/exceptionservicescommon.cs:143 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task)[0x00047] in /Users/builder/data/lanes/3426/6c3fee4d/source/xamarin-macios/_ios-build /图书馆/框架/ Xamarin.iOS.framework /版本/ git的/ src目录/单声道/ MCS /班/ referencesource/mscorlib程序/系统/运行/ compilerservices/TASKA waiter.cs:187 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task任务)[0x0002e]在 /用户/助洗剂/数据/通道/ 3426/6c3fee4d /源极/ xamarin- macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/src/mono/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:156 at System.Runtime.CompilerServices .TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task)[0x0000b] in /Users/builder/data/lanes/3426/6c3fee4d/source/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS .framework/Versions/git/src/mono/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:128 at System.Runtime.CompilerServices.TaskAwait er`1 [TResult] .GetResult() [0x00000] in /Users/builder/data/lanes/3426/6c3fee4d/source/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions /git/src/mono/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:357 在 XamarinFormsPortable.Models.TweetingViewModel + d__4.MoveNext ()[0x00328]在 C:\项目\ LinqToTwitter \的Samples \ Xamarin4 \ XamarinFormsPortable \ XamarinFormsPortable \ XamarinFormsPortable \型号\ TweetingViewModel。CS:54
引起该问题的代码是一个LINQ到Twitter查询:
var ctx = new TwitterContext(auth);
ulong InitialTweetId = 1;
int MaximumTweetsToRetrieve = 20;
var tweetsQuery = from tweet in ctx.Status
where tweet.Type == StatusType.User &&
tweet.ScreenName == "reinoso_alvaro" &&
tweet.Text.Contains("#buenosdias") &&
tweet.IncludeRetweets == false &&
tweet.TrimUser == true &&
tweet.ExcludeReplies == true &&
tweet.SinceID == InitialTweetId &&
tweet.Count == MaximumTweetsToRetrieve
select tweet;
var tweetList = await tweetsQuery.ToListAsync();
引起该问题是SinceID
的条件,这是ulong
。但是,您可以从堆栈跟踪中看到最后一种方法是EqualInt64
,即long
。我寻找与SinceID
合作的每个地方,他们都是ulong
。最后一行出现异常:awaiting tweetsQuery.ToListAsync()
的ToListAsync
实现是:
public static async Task<List<T>> ToListAsync<T>(this IQueryable<T> query)
{
var provider = query.Provider as TwitterQueryProvider;
IEnumerable<T> results = (IEnumerable<T>)await provider.ExecuteAsync<IEnumerable<T>>(query.Expression).ConfigureAwait(false);
return results.ToList();
}
ExecuteAsync
运行并返回结果。然后在通过results.ToList()
实现时发生异常。
这只发生在iOS上。
并没有'tweet.SinceID == InitialTweetId'它的工作? –
@ Sven-MichaelStübe没有SinceID,它不会抛出异常,但在逻辑上它不会工作,因为它是分页所必需的。 –