我有一个 StructureMap 配置,看起来像:
cfg.For<ICacheOrder>().Use<CacheOrder>().Ctor<int>().Is(context => LoginHelper.LoginID);
cfg.For<ICacheProduct>().Use<CacheProduct>().Ctor<int>().Is(context => LoginHelper.LoginID);
cfg.For<ISQLOrder>().Use<SQLOrder>().Ctor<int>().Is(context => LoginHelper.LoginID);
cfg.For<ISQLProduct>().Use<SQLProduct>().Ctor<int>().Is(context => LoginHelper.LoginID);
通过构造函数注入,可以创建一系列对象,其中一些需要在创建时确定的 int LoginID。静态 LoginHelper 确定 LoginID。
目前在我的配置中,每个创建的对象都会调用 LoginHelper。有没有办法,也许通过 StructureMap 的 IContext,让 LoginID 被“记住”并且只在创建链中确定一次?
我知道我可以重构并创建一个结构映射可以构造和缓存的 ILogin 接口/具体 - 但我希望我的各个层只关心一个简单的 int LoginID。