Экземпляры сессий в 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.