0

私はNinjectを初めて使用しています(最新のv3を使用しています)。基本は正常に動作しました (モジュールなしの名前付きバインディングを含む、つまりカーネル上で直接) が、モジュールで動作させることができません。

モジュールは次のようになります。

public class MainModule : NinjectModule
{
    public override void Load()
    {
        Bind<Window>().ToMethod(context => App.Current.MainWindow).Named("MainWindow");
    }
}

そして、私はそれを次のように使用しています:

    public MainViewModel Main
    {
        get
        {
            return kernel.Get<MainViewModel>("MainWindow");
        }
    }

その結果、「一致するバインディングがありません」という ActivationException が発生します。名前付きバインディングがなくても問題なく動作します。

モジュールで名前付きバインディングを使用するにはどうすればよいですか?

4

1 に答える 1

1

あなたは拘束力Windowがありますが、MainViewModel. これら 2 つのことの間に相関関係はありません。ですから、なぜこれがうまくいくと思うのか、私にはわかりません。

のような自己バインド可能なオブジェクトMainViewModelは暗黙的に自分自身にバインドされるため、名前がなくても機能します。それが機能している理由です。

アップデート:

私があなたを正しく理解しているなら、あなたは欲しい

Bind<Window>().ToMethod(context => App.Current.MainWindow).WhenParentNamed("MainWindow");
Bind<MainViewModel>().ToSelf().Named("MainWindow");
于 2012-11-01T12:07:09.693 に答える