起初我确实秘密地假设我可以理解它,但是通过一些简单的例子Autofac,我似乎理解错了,这是我尝试过的代码:
//register the service
autofacBuilder.RegisterType<MyService>()
.As<IMyService>().InstancePerLifetimeScope();
//testing code
void _test1()
{
var myService = autofacContainer.Resolve<IMyService>();
}
void _test2()
{
_test1();
var myService = autofacContainer.Resolve<IMyService>();
}
通过运行测试它_test2(),您可以简单地检查两种方法中解析的实例。
所以通过上面的代码,我理解myServicein_test1和myServicein_test2应该是不同的。因为我认为 in 的生命周期范围myService应该_test1在那个方法中,而 in 的生命周期范围也myService应该_test2在_test2。所以我们在这里有2 个不同的范围,但不知何故,解析的实例myService是同一个。
那么您能否向我解释一下这个问题,lifetime scope 这里到底是什么意思?在同一个班级里?或者更大的东西?