修改
几年后,事情变得更容易了。现在可以省略
Register()
属性,包括应用程序和应用程序委托,而是使用:
UIApplication.Main(args, typeof(CustomApp), typeof(CustomAppDelegate));
为了能够覆盖UIApplication.SendEvent(),我想继承UIApplication:
public class UIApplicationMain : UIApplication
{
public UIApplicationMain () : base()
{
}
public override void SendEvent (UIEvent uievent)
{
base.SendEvent (uievent);
}
}
在main.cs中,我使用以下代码:
public class Application
{
static void Main (string[] args)
{
UIApplication.Main (args, "UIApplicationMain", "AppDelegateBase");
}
}
但它失败了:
Objective-C exception thrown. Name:
NSInternalInconsistencyException原因:无法实例化 UIApplication子类实例。没有名为UIApplicationMain的类 加载。
所以我猜错了一些属性。但是什么,在哪里?
答案 0 :(得分:11)
为新类型添加 [注册] 属性,例如:
[Register ("UIApplicationMain")]
public class UIApplicationMain : UIApplication {
...
这将允许本机端在Main执行时实例化正确的类型。