我有一个带有Ninject IOC的Windows Phone应用程序。
在某些时候,我意识到我的MainPage.xaml.cs(首先被初始化的应用程序的初始页面)需要一个带参数的构造函数。
我已经将params添加到这样的构造函数中:
public partial class MainPage : PhoneApplicationPage
{
private readonly Settings _settings;
// Constructor
public MainPage(Settings _settings)
在我的Ninject模块中,我有设置类型的活页夹:
this.Bind<Settings>().ToSelf().InSingletonScope();
但是,无论何时我运行应用程序,我都会在启动时收到MissingMethodException。
我通过在MainPage()中保留无参数构造函数解决了这个问题,并且我使用Ninject的服务定位器模式来获取Settings实例。
我想知道我是否有办法让我的应用服务定位器免费?
答案 0 :(得分:3)
我担心Silverlight导航的工作方式无法做到这一点。你必须有无参数构造函数。通常,您将使用服务定位器来解析您需要注入依赖项的ViewModel,而不是您的视图。
作为旁注,不要陷入以为您应该像开发桌面应用程序一样开发移动应用程序的陷阱。相同的规则不会自动应用。 IOC是一种企业设计模式,旨在通过长期开发的许多开发人员降低大型应用程序的复杂性。手机应用程序通常是小型应用程序,很少有开发人员在很短的时间内开发 - 所以它不一定是你必须严格遵循设计模式到字母甚至根本不是。