Экземпляры сессий в TinyIoC

Мне нужно, чтобы экземпляр класса создавался только один раз за сеанс пользователя. Как мне зарегистрировать такой класс в TinyIoC? Я использую NancyFx.

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.InProc NuGet.

Другие вопросы по тегам