根据Simple Injector documentation ,存在 Per Graph 生活方式,可用于将对象的范围限制为当前图表。但文档没有列出实现它实际需要做什么,而且我在网上找不到任何有关如何使用它的文档。注册对象时如何定义对象的 Per Graph 范围?
我本以为:
container.Register<ISomeType, SomeType>(Lifestyle.PerGraph);
会存在,但默认情况下不存在。
最佳答案
文档指出:
This lifestyle can be simulated by using one of the Scoped lifestyles.
换句话说,Simple Injector 不包含开箱即用的 PerGraph 生活方式(文档对此并没有明确说明,因此可能需要稍微改进)。诀窍是选择适当的范围生活方式(取决于您的要求)并(隐式或显式)启动范围并解析图表。例如:
var scopedLifestyle = new AsyncScopedLifestyle();
container.Register<ISomeType, SomeType>(scopedLifestyle);
using (AsyncScopedLifestyle.BeginScope(container))
{
var some = container.GetInstance<SomeRootObjectDependingOnSomeType>();
some.Execute();
}
简单注入(inject)器中不存在每图生活方式的主要原因是它可能非常不可靠。如果部分图的构建被延迟(例如,由于使用 Lazy
关于c# - 如何实现 PerGraph 生活方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28834216/