Я в настоящее время портирую кодовую базу .NET в MonoTouch, и в настоящее время я работаю над методом, который получает Expression<T>
. Я пытаюсь скомпилировать его, а затем динамически вызывать его.
Вот что я сделал:
// 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)
Что я делаю не так и как я могу заставить это работать?