起初我确实秘密地假设我可以理解它,但是通过一些简单的例子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()
,您可以简单地检查两种方法中解析的实例。
所以通过上面的代码,我理解myService
in_test1
和myService
in_test2
应该是不同的。因为我认为 in 的生命周期范围myService
应该_test1
在那个方法中,而 in 的生命周期范围也myService
应该_test2
在_test2
。所以我们在这里有2 个不同的范围,但不知何故,解析的实例myService
是同一个。
那么您能否向我解释一下这个问题,lifetime scope
这里到底是什么意思?在同一个班级里?或者更大的东西?