C# Mono для iOS имеет определенные ограничения из-за требования Apple предварительно скомпилировать код, т. Е. Компиляция JIT не разрешена. Из-за этого такие вызовы, как Reflection.Emit, не поддерживаются. Но мне интересно, можно ли использовать динамику C# в C#, скомпилированном для iOS.Поддерживает ли MonoTouch динамику C#?
Например:
repository.Find (repository.UserName == "Джон");
Здесь «репозиторий» представляет собой динамический объект со статическим методом «Найти» и динамическое свойство «UserName». Этот подход отлично работает на всех современных платформах .NET на базе Windows, я считаю, что он также работает на Mono для Android. Но как насчет MonoTouch? В принципе, не должно быть ограничений для динамического разрешения динамических свойств, основанных на информации о времени выполнения, если только это не является законным ограничением, которое Apple так хорошо вносит.
От http://tirania.org/monomac/archive/2011/Apr-06.html: * Существует одно важное ограничение: динамическая поддержка C# 4.0 не работает, поскольку для ее работы требуется динамическое создание кода. * –
Какая жалость! Но не вся динамика - это генерация кода, не так ли? Или Apple настолько строга, что любой синтаксис языка, не приводящий к прекомпилированным двоичным файлам, запрещен? Спасибо за разъяснение. –
Это мое понимание, да. Apple предварительно одобряет весь код в приложениях iOS; сгенерированный код не существует до тех пор, пока он не будет сгенерирован, поэтому они не смогут его контролировать. –