将AppDelegate类移动到库项目中

时间:2013-01-29 20:51:28

标签: c# xamarin.ios

所以我试图从应用程序项目中获取大部分代码并将其放在库项目(dll)中以供重用。我已经从主应用程序项目移动了我的AppDelegate.cs类并将其放在库项目中。然后我在AppDelegate类上更新了我的Register属性以反映移动。

namespace DLLNamespace
{
    [Register ("DLLNamespace.AppDelegate")]
    public partial class AppDelegate : UIApplicationDelegate
    {
        ...
    }
}

然后在Main.cs文件中的app项目中,我已更改为以下

public class Application
{
    static void Main(string[] args)
    {
        UIApplication.Main(args, null, "DLLNamespace.AppDelegate");
    }
}

所有这些在iOS模拟器中运行良好,但是一旦我在iPhone 5上运行调试,我就会在Main上出现以下错误

Objective-C exception thrown. Name: NSInternalInconsitencyException Reason: Unable to            instantiate the UIApplication delegate instance. No class named DLLNamespace.AppDelegate is loaded.

同样,它在iOS模拟器中运行良好,我可以进入库项目的AppDelegate类中的代码,但在实际设备上进行炸弹。

1 个答案:

答案 0 :(得分:0)

我认为将AppDelegate放在类库中并不是一个好的设计,因为它既适用于iOS,也适用于UI。您可以将AppDelegate中的大部分代码移动到更通用的通用类吗?

我尽量保持AppDelegate小,如果应用代表相同,有时甚至会“链接”文件。我会为同一个应用程序的“免费”和“专业版”执行此操作。