TinyIoC中的会话范围实例

时间:2016-01-29 15:10:34

标签: ioc-container nancy tinyioc

我需要每个用户会话只创建一次类的实例。如何在TinyIoC中注册这样的课程?我正在使用NancyFx。

1 个答案:

答案 0 :(得分: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。