Как позвонить в приватный API из Monotouch? - PullRequest
3 голосов
/ 12 января 2011

Мои знания о P/Invoke в Monotouch довольно ужасны, и я хочу вызвать частный API для iOS для UITextView (в частности, setContentToHTMLString), и я не уверен, с чего начать.

Если бы кто-нибудь мог сказать мне, как это делается (или даже с чего начать!), Это было бы блестяще.

Просто заметьте, это для личного проекта, который я делаю, в основномрасширить мои знания.Вероятность отправки этого приложения в магазин приложений очень мала, поэтому на него не распространяются правила App Store / возможность Apple изменить его.

edit

Это просто случай использования Selector?

Ответы [ 2 ]

2 голосов
/ 12 января 2011

Самый простой способ вызвать его с помощью селектора, например так:

Selector s = new Selector("myPrivateAPIMethodName");
MyObjectToCallTheMethodOn.PerformSelector(s, parameterOfTheObject, 0);

Конечно, будьте очень осторожны с этим .. Apple не допускает частных вызовов API для вашего приложения, поэтому, если вы планируете пойти в AppStore с чем-то вроде этого против API, как вы хотите, они будут отклонить ваше приложение.

0 голосов
/ 12 января 2011

Если вы пытаетесь вызвать частный метод .net, вы можете использовать отражение.

Вы можете использовать приведенный ниже код в качестве примера:

            object oToInvoke;

        //Get the type of object
        Type t = typeof( oToInvoke );

        //Invoke 'PrivateMethodName'
        return t.InvokeMember( "PrivateMethodName",
                          System.Reflection.BindingFlags.NonPublic
                        | System.Reflection.BindingFlags.Instance
                        | System.Reflection.BindingFlags.InvokeMethod
                        , null
                        , oToInvoke
                        , null );

Это позволит вызвать метод, который может иметь тип возвращаемого значения. Вам просто нужно привести тип возвращаемого значения InvokeMember

То в пространстве имен System.Reflection

Надеюсь, это поможет!

...