0

StructureMap にデフォルト以外のインスタンスをキャッシュさせる方法がわかりません。このようなコードでデフォルトのインスタンスをキャッシュできます

ForRequestedType<ISession>()
            .CacheBy(InstanceScope.HttpContext)
            .TheDefault.Is.ConstructedBy(() => ObjectFactory.GetInstance<ISessionFactory>().OpenSession());

これは期待どおりに機能します。そして、名前付きインスタンスをうまく作成できます

InstanceOf<User>().Is.ConstructedBy(() => someAwesomeConstructor()).WithName("CurrentUser");

しかし、セッションごとに「CurrentUser」をキャッシュしたいのですが、 .CacheBy() は CreatePluginFamilyExpression<> にのみ存在し、CreatePluginFamilyExpression<> から IsExpression<> に取得するように指示できる唯一の方法は、プロパティ TheDefault を使用することです。私はデフォルトを作成しますが、これは望ましくありません。

4

2 に答える 2

3

これは私がすぐに得ることができる限り近いものでした

ForRequestedType<IInterface>()
    .AddInstances(x => x
        .OfConcreteType<Implementation>()
        .WithName("foo"))
    .CacheBy(InstanceScope.HttpContext);
于 2009-04-11T16:06:24.810 に答える