私はこのようにコンストラクタインジェクションを試みました:
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.xaml
で宣言されています。WMAppManifest.xml
NavigationPage
コンストラクター内ではMainPage
、コンテナーを直接使用してサービスを正常に解決できますが、コンストラクター注入を使用したいと考えています。
これに関する具体的な例は見つかりませんでした。誰でもそれがどのように機能するか考えていますか?