1

我以这种方式尝试了构造函数注入:

public partial class MainPage : PhoneApplicationPage
{
    private readonly ISomeService service;

    public MainPage(ISomeService service)
    {
        InitializeComponent();

        this.service = service;
    }
}

App.xaml.cs构造函数中:

public App()
{
    // Global handler for uncaught exceptions.
    UnhandledException += Application_UnhandledException;

    DependencyService.Initialize(GetAssemblyFilePathCollection());

    DependencyService
        .Container
        .Register(typeof(MainPage), made: Made.Of(() => new MainPage(Arg.Of<ISomeService>())));

    // The remaining part is omitted.
}

DependencyService是我的自定义静态类,它创建Container并加载所有程序集的绑定。

在这种情况下App.RootFrame_NavigationFailed(object sender, NavigationFailedEventArgs e),方法总是被执行:

  • e.Exception是一个System.MissingMethodException与消息No parameterless constructor defined for this object.
  • e.Uri/MainPage.xamlWMAppManifest.xml文件中声明为NavigationPage.

MainPage构造函数内部,我可以直接使用容器成功解析服务,但我想使用构造函数注入。

我还没有找到任何具体的例子。有人知道它是如何工作的吗?

4

0 回答 0