2011-07-17 13 views
1

私はNinject IOCのWindows Phoneアプリを持っています。PhoneApplicationPageのパラメータのないコンストラクタがありません

ある時点で、私のMainPage.xaml.cs(最初に初期化されるアプリケーションの最初のページ)に、パラメータ付きのコンストラクタが必要であることがわかりました。

私はこのようなコンストラクタにのparamsを追加しました:私のNinjectモジュールで

public partial class MainPage : PhoneApplicationPage 
    { 
     private readonly Settings _settings; 

     // Constructor 
     public MainPage(Settings _settings) 

私はセッティングのタイプのためのバインダーを持っている:

しかし
this.Bind<Settings>().ToSelf().InSingletonScope(); 

、私はアプリを実行することになっている時はいつでも、私は起動時にMissingMethodExceptionを取得します。

私はMainPage()にパラメータのないコンストラクタを保持することでこの問題を回避し、Ninjectでサービスインスタンスパターンを使用してSettingsインスタンスを取得しました。

アプリサービスロケータを無料で利用できる方法があるかどうかを知りたいですか?

+1

依存関係を実際のページクラスではなくViewModelに移動できますか?それは私がやっていることです、私はNinjectを通してそのモデルを読み込むページベースクラスを持っています。ページを作成するコードを置き換えることが可能かどうかはわかりませんが、私は見たことがありません。 –

答えて

3

これは、Silverlightのナビゲーションの仕組みでは不可能です。パラメータのないコンストラクタが必要です。通常は、サービスロケータを使用してViewModelを解決します.ViewModelは、ビューではなく依存関係を注入する必要がある場所です。

デスクトップアプリケーションと同じように、モバイルアプリを開発する必要があるとの考えの罠に陥ることはありません。同じルールは自動的に適用されません。 IOCはエンタープライズデザインパターンであり、長期にわたって開発された多くの開発者がいる大規模なアプリケーションの複雑さを軽減することを目指しています。電話機のアプリは、通常、小規模なアプリであり、短期間で開発された開発者はほとんどないため、デザインパターンを手紙にしっかりと従わなければならないということは必ずしも真実ではありません。

+0

ありがとうございます。 –

関連する問題