2013-04-28 15 views
5

Objective-C'de, UITableViewControllerDelegate gibi temsilciler protokollerdir, böylece tek bir sınıfta birden çok uygulayabilirim.Monotouch'ta çoklu delegeler nasıl uygulanır?

Monotouch'ta, tüm iOS delegeleri C# sınıfları olarak görünür. Bu, C# (haklı olarak IMO) sadece tek bir mirasa izin verdiğinden, tek bir kontrolör sınıfı üzerinde iki delege uygulamak imkansız hale getirir.

Temsilci bildirimleri Monotouch çerçevesinde bir yerde C# arabirimleri olarak var mı? (Bu, Objective-C'den protokole gelebildiğimiz en yakın olurdu)

Monotouch/C# 'da bir sınıfa birden fazla delegeyi yerleştirmem gerekirse seçeneklerim nelerdir?

cevap

5

Bunu yapmak için WeakDelegate kullanabilirsiniz, ancak tüm Export süslemelerinin doğru olması gerekir. Alt here yakınındaki zayıf delegelerdeki belgeler. Here, zayıf delegelere sahip UITableViewSource örneğidir.

Xamarin'in Obj-C protokolleri için arabirimler yerine sınıfları neden kullanmak zorunda olduğunun tam olarak emin değilim, ama bunun bir geçici çözüm olması gerektiğine inanıyorum.

+0

Arabirimler yerine sınıfların kullanılmasının nedeni Obj-C protokollerinin isteğe bağlı yöntemlere sahip olmasıdır. Yönetilen arayüzler yapamaz. –

+0

Bu mantıklı… MonoTouch'da kullanılan tüm seçmenler için bir dizi genel dizi sabitleri varsa, bu işe yarar. – jonathanpeppers

+0

@jonathanpeppers http://tirania.org/tmp/rosetta.html – dalexsoto