0

私は .NET MVC と Ninject の両方の初心者です。

ここで、Ninject カーネルを取得する方法を示します。

public class NinjectKernel
{
    private static IKernel _Instance = new StandardKernel();

    public static IKernel getInstance()
    {
            return _Instance;
    }
}

再利用したいオブジェクトのインスタンスを保存する方法は次のとおりです。

(...) NK = NinjectKernel.getInstance();
private Game getGameInstance() {
    IGame iGame;
    try
    {
        iGame = NK.Get<IGame>(DefaultGameName);
    }
    catch
    {
        NK.Bind<IGame>().To<Game>().InSingletonScope().Named(DefaultGameName)
            .WithConstructorArgument("ColorChoiceCount", 12)
            .WithConstructorArgument("CodeLength", 6)
            .WithConstructorArgument("TurnsToBePlayed", 8)
            .WithConstructorArgument("DoubleColorAllowed", true)
            ;
        iGame = NK.Get<IGame>(DefaultGameName);
    }
    return (Game)iGame;
}

使用「セッション」内で Game オブジェクトを再利用できるようにしたいのです。つまり、彼がサイトを離れた場合、このインスタンスは再び使用されません。しかし、現在の状況では、デバッグ中にアプリケーションを閉じて再起動すると、常に以前の「セッション」のインスタンスが再取得されます。また、複数のユーザーに対して同じインスタンスを取得できないかどうかも知りたいです。これは望ましくないからです。(ユーザーは認証されている場合と認証されていない場合がありますが、現在はまったく認証されていません)。

(そこに try/catch を使用するよりも良い解決策を提案することもできますが、それが必要であると確信していますが、これが機能するため、現時点では優先事項ではありません。)

ご協力ありがとうございました。

4

2 に答える 2

0

あなたはそれをする必要はありません。Nugetを使用してNinject.MVC3をインストールするだけです。これにより、MVC DependencyResolver APIを使用するようにプロジェクトが自動的にセットアップされ、マッピングを作成するためのNinjectMVC3.csファイルが作成されます。

于 2012-04-04T15:48:18.793 に答える