Компиляция лямбда-выражений и вызов делегатов на устройстве в Monotouch

В настоящее время я портирую кодовую базу .NET в MonoTouch, и в настоящее время я работаю над методом, который получает Expression . Я пытаюсь скомпилировать его, а затем динамически вызвать.

Вот что я сделал:

// Here's an example of what I could receive
Expression<Action<int>> expression = (a => Console.WriteLine (a * 2));

// And here's what I'm trying to do to invoke it
expression.Compile().DynamicInvoke(6);

Это отлично работает в симуляторе iOS, результат «12» напечатан в моей консоли. Но затем я попробовал его на iPad и получил следующее исключение.

Object reference not set to an instance of an object
   at System.Linq.jvm.Runner.CreateDelegate ()
   at System.Linq.Expressions.LambdaExpression.Compile ()
   at System.Linq.Expressions.Expression`1[System.Action`1[System.Int32]].Compile ()
   at TestSolution2.AppDelegate.FinishedLaunching (MonoTouch.UIKit.UIApplication app, MonoTouch.Foundation.NSDictionary options)

Что я делаю не так и как я могу заставить его работать?

9
задан abatishchev 24 July 2011 в 15:01
поделиться