Xamarin窗体IEventAggregator iOS中类应用程序崩溃
我使用Xamarin.Forms和棱镜6.3.0Xamarin窗体IEventAggregator iOS中类应用程序崩溃
我有,我想用IEventAggregator
iOS的项目的类。当我将IEventAggregator
作为参数传递给类的构造函数时,应用程序崩溃。
澄清,我试图从iOS类发布,而不是订阅由Xamarin.Forms发布的事件。
如何在Xamarin.Forms的iOS项目的类中使用IEventAggregator
?
的问题的答案是here
总之,在班级中的iOS项目中添加using语句using Microsoft.Practices.Unity;
和在类的constractor为了增加
var ea = ((App)Xamarin.Forms.Application.Current).Container.Resolve<IEventAggregator>();
到获取EventAggregator。
然后你可以用它来发布消息,即
ea.GetEvent<SomeEvent>().Publish(somePayload);
我不知道是否有更优雅的解决方案,但有一个工作。您必须使用正确的注入参数手动添加依赖项到您的容器。
在你的平台特定项目(iOS版在这种情况下,但它适用于Android的,太)以下行更改
this.LoadApplication(new App());
到
var app = new App();
this.LoadApplication();
鉴于你App
是一个PrismApplication
你可以现在访问IUnityContainer
并手动注册您的类型
var app = new App();
app.Container.RegisterType(typeof(IServiceService),
typeof(MyServiceService),
string.Empty,
new ContainerControlledLifetimeManager(),
new InjectionConstructor(new ResolvedParameter(typeof(IEventAggregator))));
this.LoadApplication(app);
现在Unity应该能够正确解析MyServiceService
,并且您的应用不应该再崩溃。也许你必须删除
[assembly: Xamarin.Forms.Dependency(typeof(MyServiceService)]
但我没有尝试,如果它坠毁,如果它不被删除。
不,它不起作用。 (未处理的异常: Foundation.MonoTouchException:抛出的Objective-C异常。名称:NSInternalInconsistencyException原因:应用程序窗口预期会有一个异常(太长以至于无法将其作为注释使用)应用程序启动结束时的根视图控制器 本地堆栈跟踪:等) – Dimitris
*“的应用程序崩溃” *是不是一个合适的错误描述。什么异常导致应用程序崩溃?此外,在不知道代码的情况下很难提供帮助。请添加您的*相关*代码或 - 更好 - 一个[mcve]。 –
没有可见的错误。设备(iPhone 6)在没有任何消息的情况下停止应用程序。代码很简单'public My ServiceService(IEventAggregator ea) { _ea = ea; }' – Dimitris
你试过调试吗?增加了'try'-'catch'块? (我知道这很简陋,但在设备上调试有时不如调试本地应用程序时那么舒服 - 当调试器没有显示正常的例外情况时,它有时对我有帮助。) –