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 回答