我的问题与StructureMap有关,以及如何实例化对象以在同一http请求上下文内的对象层次结构之间共享数据?
我具有以下生成某些数据的类层次结构。
IPageBuilder
-> IShipmentBuilder
-> IItemBuilder
-> IItemShippingOptionBuilder
-> IShippingOptionBuilder
-> IDeliveryMethodBuilder
-> IPaymentBuilder
-> ISummaryBuilder
在客户端代码中:我们使用IPageBuilder.Build()将调用构建器的层次结构并返回一个对象。
基本上,我们希望将一些数据从IItemBuilder共享到ISummaryBuilder。例如,IItemBuilder进行API调用,并且响应也应与ISummaryBuilder共享。
尝试的方法:引入一个对象(例如IDataContext)并将其作为参数传递给上述所有构建器,但这似乎是乏味的解决方案。
预期的解决方案:有没有一种使用StructureMap的方法,可以在IItemBuilder中注入IDataContext,存储一些数据,并且应该与ISummaryBuilder共享相同的数据,并且应该在每个http请求上下文中发生。
简而言之,有没有一种方法可以在structuremap中为每个http请求创建一个单例?
答案 0 :(得分:0)
导入了程序包StructureMap.Web,并为IDataContext使用了HttpContextBasedLifeCycle,并在DataContext具体类中保留了一个字典,以将数据保留到httpContext的生存期。