Создание подклассов ObjC и классов с C # в MonoTouch и MonoDroid - PullRequest
0 голосов
/ 16 августа 2011

Я собираюсь оценить MonoTouch и MonoDroid, чтобы объединить нашу разработку, но я не уверен, правильно ли я получил подклассы двух.Документация MonoTouch и MonoDroid http://ios.xamarin.com/Documentation/API_Design#Design_Principles говорит о том, что вы сможете создавать подклассы из кода ObjC и Java.

Означает ли это, что я действительно могу взять существующий неструктурный код как пользовательскийЭлемент пользовательского интерфейса или существующая бизнес-логика и создать его подкласс в C # для использования в моем проекте?Пример был бы великолепен, потому что я не имею ни малейшего понятия о том, как это работает с моно и C #.

Спасибо!

Ответы [ 2 ]

2 голосов
/ 16 августа 2011

Да, вы можете! Вот пример Miguel's GlassButton MonoTouch.

Как вы можете видеть, он наследует от управляемых привязок родной iOS UIButton и оттуда может переопределять свои методы, как вы ожидаете в C #.

 public class GlassButton : UIButton {
    ...

    public override bool BeginTracking (UITouch uitouch, UIEvent uievent)
    {
       SetNeedsDisplay ();
       pressed = true;
       return base.BeginTracking (uitouch, uievent);
    }
    ...

Вы можете сделать то же самое, связав свой собственный код UI (или не UI), а затем использовать его как обычный код C # (и наследовать, переопределять ... его).

Код привязки для MonoTouch и Mono для Android различен, но как только он будет сделан, он все тот же (мудрый C #).

0 голосов
/ 18 августа 2011

Означает ли это, что я на самом деле могу взять существующий не-каркасный код, например, пользовательский элемент пользовательского интерфейса или существующую бизнес-логику, и создать его подкласс в C # для использования в моем проекте?

Если я вас понимаю, может быть. : -)

В MonoTouch вы можете связать тип Objective C с типом C # , а затем создать подкласс связанного типа C #. Это чрезвычайно гибко и позволяет создавать подклассы любого типа Objective-C из C #. (Нет необходимости связывать, например, типы UIKit, поскольку они уже связаны внутри monotouch.dll.)

Эквивалент в Mono для Android - создание подкласса «случайного» Java-класса в C # - в настоящее время невозможен. Код C # может только создавать подклассы типов и реализовывать интерфейсы, найденные в Mono.Android.dll (который связывает типы, найденные в android.jar). Ведется работа по ослаблению этого ограничения в будущем выпуске.

...