Сначала я конфиденциально предполагал, что могу это понять, но на каком-то простом примере с 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()
, и вы можете просто проверить экземпляры, разрешенные в 2 методах.
Итак, с помощью приведенного выше кода я понимаю значения myService
в _test1
и myService
в_test2
должно быть другим.Потому что я думаю, что время жизни myService
в _test1
должно быть именно в этом методе, в то время как время жизни myService
в _test2
должно быть и в _test2
.Итак, у нас есть 2 разных области действия здесь, но каким-то образом разрешенные экземпляры myService
совпадают.
Так что вы не могли бы объяснить мне эту проблему,что именно здесь означает lifetime scope
?внутри одного класса?или что-то еще больше?