我即将评估MonoTouch和MonoDroid来统一我们的开发,但我不确定我是否得到了两个子类的子类。 MonoTouch和MonoDroid http://ios.xamarin.com/Documentation/API_Design#Design_Principles的文档说明您可以从ObjC和Java代码创建子类。
这是否意味着我实际上可以将现有的非框架代码视为自定义UI元素或现有业务逻辑,并在C#中创建它的子类以在我的项目中使用?一个例子会很棒,因为我没有丝毫关于单声道和C#的工作原理。
谢谢!
答案 0 :(得分:2)
是的,你可以!这是Miguel的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 for Android的绑定代码是不同的,但一旦完成,它们都是一样的(C#明智的)。
答案 1 :(得分:0)
这是否意味着我可以实际使用现有的非框架代码,如自定义UI元素或现有业务逻辑,并在C#中创建它的子类以在我的项目中使用?
如果我理解你,也许吧。 : - )
在MonoTouch中,您可以通过binding the Objective-C type to a C# type,然后继承绑定的C#类型。这非常灵活,允许从C#继承〜任何Objective-C类型。 (不需要绑定例如UIKit类型,因为它们已经绑定在monotouch.dll
中。)
Mono for Android中的等价物 - 在C#中继承“随机”Java类 - 目前无法实现。 C#代码只能子类化并实现Mono.Android.dll
中的接口(它绑定android.jar
中的类型)。正在努力在将来的版本中放宽这一限制。