MakeGenericMethod / MakeGenericType на Xamarin.iOS

Я пытаюсь понять, что на самом деле означают ограничения при развертывании iOS из Xamarin.

http://developer.xamarin.com/guides/ios/advanced_topics/limitations/

У меня сложилось впечатление, что у вас нет JIT и, следовательно, любой MakeGenericMethod или MakeGenericType НЕ будет работать, так как это потребует JIT-компиляции.

Также я понял, что при работе на симуляторе эти ограничения не применяются, так как симулятор не работает в режиме полного AOT (Ahead of Time).

После настройки моего Mac, чтобы я мог развернуть его на своем телефоне, я, за исключением следующего теста, проваливался при работе на реальном устройстве (iPhone).

    [Test]
    public void InvokeGenericMethod()
    {
        var method = typeof(SampleTests).GetMethod ("SomeGenericMethod");

        var closedMethod = method.MakeGenericMethod (GetTypeArgument());

        closedMethod.Invoke (null, new object[]{42});

    }

    public static void SomeGenericMethod<T>(T value)
    {
    }


    private Type GetTypeArgument()
    {
        return typeof(int);
    }

Дело в том, что все завершается успешно, и я не могу понять, почему. Разве этот код не требует JIT-компиляции?

Чтобы «сломать», я также провел тест с MakeGenericType.

    [Test]
    public void InvokeGenericType()
    {
        var type = typeof(SomeGenericClass<>).MakeGenericType (typeof(string));

        var instance = Activator.CreateInstance (type);

        var method = type.GetMethod ("Execute");

        method.Invoke (instance, new object[]{"Test"});

    }


public class SomeGenericClass<T>
{
    public void Execute(T value)
    {

    }
}

Как это может работать, когда нет JIT?

Я что-то пропустил ?

Ответы на вопрос(1)

Ваш ответ на вопрос