我很难搞清楚如何让StructureMap缓存一个非默认实例。我可以用这样的代码缓存默认实例使用StructureMap来缓存命名实例
ForRequestedType<ISession>()
.CacheBy(InstanceScope.HttpContext)
.TheDefault.Is.ConstructedBy(() => ObjectFactory.GetInstance<ISessionFactory>().OpenSession());
它按预期工作。我可以创建一个命名实例细
InstanceOf<User>().Is.ConstructedBy(() => someAwesomeConstructor()).WithName("CurrentUser");
但我真的想通过会话缓存“当前用户”,但.CacheBy()只在CreatePluginFamilyExpression <存在>的唯一途径,我可以告诉从得到 CreatePluginFamilyExpression <> IsExpression <>是由属性TheDefault,这迫使我创建一个默认,我不想。
在这种情况下,它非常好。我只有一个“特殊”实例,所以只有一个缓存范围不是问题。我只是不想要一个默认实例,因为如果他们把一个用户放在构造函数中并突然将当前用户从无处剔除,可能会使某人感到困惑。 – 2009-04-13 14:34:44