1

ユーザー セッションごとに 1 回だけ作成されるクラスのインスタンスが必要です。このようなクラスを TinyIoC に登録するにはどうすればよいですか? NancyFx を使用しています。

4

1 に答える 1

1

私は次のコードを書くことになりました:

public static class ContainerExtensions {
    public static TinyIoCContainer.RegisterOptions SessionScoped<TRegisterType>(this TinyIoCContainer container, NancyContext context, Func<TRegisterType> factory) where TRegisterType : class
    {
        return container.Register<TRegisterType>((ctx, overloads) =>
        {
            var key = typeof(TRegisterType).FullName;
            var instance = context.Request.Session[key] as TRegisterType;
            if (instance == null) {
                instance = factory();
                context.Request.Session[key] = instance;
            }
            return instance;
        });
    }
}

Nancy.Session.InProcNuGetを使用しました。

于 2016-01-31T16:18:08.403 に答える