Как правильно использовать шаблон делегирования в Xamarin?
в определениях API (сгенерированных sharpie
) у меня есть протокол, сопоставленный с Interface
SomeDelegate:
// @protocol SomeDelegate <NSObject>
[Protocol, Model]
[BaseType (typeof(NSObject))]
interface SomeDelegate
{
// @required -(void)someMethod;
[Abstract]
[Export ("someMethod")]
void SomeMethod;
...
Я объявил контроллер представления следующим образом:
public partial class ViewController : UIViewController
но я не могу заставить контроллер представления реализовать мой протокол следующим образом: (не может иметь несколько базовых классов)
public partial class ViewController : UIViewController, SomeDelegate
Я могу реализовать это delegate
в каком-нибудь дополнительном классе:
public ViewControllerDelegate : SomeDelegate
и использовать этот класс в качестве делегата, но для меня это не совсем удобный способ.
Я недавно обнаружил это, добавив «I»:
public partial class ViewController : UIViewController, ISomeDelegate
Я избегаю "ошибки нескольких базовых классов", поскольку (я предполагаю) явно говорю компилятору, что это интерфейс (протокол), а не базовый класс.
Теперь мне нужно передать делегат в качестве параметра метода и получить ошибку компиляции - не могу преобразовать тип SomeDelegate
в SomeDelegate
Есть ли способ реализовать delegates
в некоторых классах, таких как UIViewController
(что угодно)?